Built with Alectryon, running Coq+SerAPI v8.13.0+0.13.0. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use instead of Ctrl.
Notation "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "_ + _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ - _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ <= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ < _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ >= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ > _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ <= _ <= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ < _ <= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ <= _ < _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ < _ < _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ * _" was already used in scope nat_scope. [notation-overridden,parsing]
From hanoi Require Import extra. Set Implicit Arguments. Unset Strict Implicit. Unset Printing Implicit Defensive. Section Main. Variable a b : nat. Hypothesis aL1 : 1 < a. Hypothesis aLb : a < b. Hypothesis aCb : coprime a b.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b

1 < b
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b

1 < b
by apply: ltn_trans aLb. Qed. Fixpoint alphal (n : nat) := if n isn't n1.+1 then [:: 1; a; b] else let l := alphal n1 in merge leq (let c := head 1 l in let l1 := if b * c \in l then [::] else [:: b * c] in if a * c \in l then l1 else a * c :: l1) (behead l). Definition alpha n := head 1 (alphal n).
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
T:eqType
r:rel T
l:seq T

sorted r l -> sorted r (behead l)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
T:eqType
r:rel T
l:seq T

sorted r l -> sorted r (behead l)
by case: l => //= a1 [|b1 l /andP[]]. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

sorted leq (alphal n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

sorted leq (alphal n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:sorted leq (alphal n)

sorted leq (merge leq (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) (behead (alphal n)))
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:sorted leq (alphal n)

sorted leq (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)]))
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:sorted leq (alphal n)
sorted leq (behead (alphal n))
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:sorted leq (alphal n)

sorted leq (behead (alphal n))
by apply: behead_sorted. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
i:nat_eqType

i \in alphal n -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
i:nat_eqType

i \in alphal n -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i:nat

i \in [:: 1; a; b] -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
(forall i : nat, i \in alphal n -> 0 < i) -> forall i : nat, i \in merge leq (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) (behead (alphal n)) -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

(forall i : nat, i \in alphal n -> 0 < i) -> forall i : nat, i \in merge leq (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) (behead (alphal n)) -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat

(i == a * 1) || (i == b * 1) -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, a1:nat
l:seq nat
IH:forall i : nat, i \in a1 :: l -> 0 < i
i:nat
i \in merge leq (if (a * a1 == a1) || (a * a1 \in l) then if (b * a1 == a1) || (b * a1 \in l) then [::] else [:: b * a1] else a * a1 :: (if (b * a1 == a1) || (b * a1 \in l) then [::] else [:: b * a1])) l -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, a1:nat
l:seq nat
IH:forall i : nat, i \in a1 :: l -> 0 < i
i:nat

i \in merge leq (if (a * a1 == a1) || (a * a1 \in l) then if (b * a1 == a1) || (b * a1 \in l) then [::] else [:: b * a1] else a * a1 :: (if (b * a1 == a1) || (b * a1 \in l) then [::] else [:: b * a1])) l -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, a1:nat
l:seq nat
IH:forall i : nat, i \in a1 :: l -> 0 < i
i:nat
H1:0 < a1

i \in merge leq (if (a * a1 == a1) || (a * a1 \in l) then if (b * a1 == a1) || (b * a1 \in l) then [::] else [:: b * a1] else a * a1 :: (if (b * a1 == a1) || (b * a1 \in l) then [::] else [:: b * a1])) l -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, a1:nat
l:seq nat
IH:forall i : nat, i \in a1 :: l -> 0 < i
i:nat
H1:0 < a1
i1:nat_eqType

i1 \in l -> 0 < i1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, a1:nat
l:seq nat
IH:forall i : nat, i \in a1 :: l -> 0 < i
i:nat
H1:0 < a1
IH1:forall i1 : nat_eqType, i1 \in l -> 0 < i1
i \in merge leq (if (a * a1 == a1) || (a * a1 \in l) then if (b * a1 == a1) || (b * a1 \in l) then [::] else [:: b * a1] else a * a1 :: (if (b * a1 == a1) || (b * a1 \in l) then [::] else [:: b * a1])) l -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, a1:nat
l:seq nat
IH:forall i : nat, i \in a1 :: l -> 0 < i
i:nat
H1:0 < a1
IH1:forall i1 : nat_eqType, i1 \in l -> 0 < i1

i \in merge leq (if (a * a1 == a1) || (a * a1 \in l) then if (b * a1 == a1) || (b * a1 \in l) then [::] else [:: b * a1] else a * a1 :: (if (b * a1 == a1) || (b * a1 \in l) then [::] else [:: b * a1])) l -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, a1:nat
l:seq nat
IH:forall i : nat, i \in a1 :: l -> 0 < i
i:nat
H1:0 < a1
IH1:forall i1 : nat_eqType, i1 \in l -> 0 < i1

i \in (if (a * a1 == a1) || (a * a1 \in l) then if (b * a1 == a1) || (b * a1 \in l) then [::] else [:: b * a1] else a * a1 :: (if (b * a1 == a1) || (b * a1 \in l) then [::] else [:: b * a1])) ++ l -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, a1:nat
l:seq nat
IH:forall i : nat, i \in a1 :: l -> 0 < i
i:nat
H1:0 < a1
IH1:forall i1 : nat_eqType, i1 \in l -> 0 < i1

(i == b * a1) || (i \in l) -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, a1:nat
l:seq nat
IH:forall i : nat, i \in a1 :: l -> 0 < i
i:nat
H1:0 < a1
IH1:forall i1 : nat_eqType, i1 \in l -> 0 < i1
(i == a * a1) || (i \in l) -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, a1:nat
l:seq nat
IH:forall i : nat, i \in a1 :: l -> 0 < i
i:nat
H1:0 < a1
IH1:forall i1 : nat_eqType, i1 \in l -> 0 < i1
[|| i == a * a1, i == b * a1 | i \in l] -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, a1:nat
l:seq nat
IH:forall i : nat, i \in a1 :: l -> 0 < i
i:nat
H1:0 < a1
IH1:forall i1 : nat_eqType, i1 \in l -> 0 < i1

(i == b * a1) || (i \in l) -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, a1:nat
l:seq nat
IH:forall i : nat, i \in a1 :: l -> 0 < i
i:nat
H1:0 < a1
IH1:forall i1 : nat_eqType, i1 \in l -> 0 < i1
(i == a * a1) || (i \in l) -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, a1:nat
l:seq nat
IH:forall i : nat, i \in a1 :: l -> 0 < i
i:nat
H1:0 < a1
IH1:forall i1 : nat_eqType, i1 \in l -> 0 < i1
[|| i == a * a1, i == b * a1 | i \in l] -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, a1:nat
l:seq nat
IH:forall i : nat, i \in a1 :: l -> 0 < i
i:nat
H1:0 < a1
IH1:forall i1 : nat_eqType, i1 \in l -> 0 < i1

(i == a * a1) || (i \in l) -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, a1:nat
l:seq nat
IH:forall i : nat, i \in a1 :: l -> 0 < i
i:nat
H1:0 < a1
IH1:forall i1 : nat_eqType, i1 \in l -> 0 < i1
[|| i == a * a1, i == b * a1 | i \in l] -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, a1:nat
l:seq nat
IH:forall i : nat, i \in a1 :: l -> 0 < i
i:nat
H1:0 < a1
IH1:forall i1 : nat_eqType, i1 \in l -> 0 < i1

(i == a * a1) || (i \in l) -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, a1:nat
l:seq nat
IH:forall i : nat, i \in a1 :: l -> 0 < i
i:nat
H1:0 < a1
IH1:forall i1 : nat_eqType, i1 \in l -> 0 < i1
[|| i == a * a1, i == b * a1 | i \in l] -> 0 < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, a1:nat
l:seq nat
IH:forall i : nat, i \in a1 :: l -> 0 < i
i:nat
H1:0 < a1
IH1:forall i1 : nat_eqType, i1 \in l -> 0 < i1

[|| i == a * a1, i == b * a1 | i \in l] -> 0 < i
by case/or3P=> [/eqP->|/eqP->|/IH1//]; rewrite muln_gt0 ltnW. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

alphal n != [::]
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

alphal n != [::]
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

merge leq (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) (behead (alphal n)) != [::]
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

size ((if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) ++ behead (alphal n)) != 0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c:nat
l:seq nat
H:forall i : nat, i \in c :: l -> 0 < i

size ((if a * c \in c :: l then if b * c \in c :: l then [::] else [:: b * c] else a * c :: (if b * c \in c :: l then [::] else [:: b * c])) ++ l) != 0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c:nat
l:seq nat
H:forall i : nat, i \in c :: l -> 0 < i
E:(a * c \in c :: l) = true

size ([::] ++ l) != 0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c:nat

0 < c -> (a * c == c) = true -> 1 < a -> size ([::] ++ [::]) != 0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c1:nat

(a * c1.+1 == c1.+1) = true -> 1 < a -> size ([::] ++ [::]) != 0
by rewrite -{2}[_.+1]mul1n eqn_mul2r /= => /idP/eqP->. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

uniq (alphal n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

uniq (alphal n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b

[&& 1 \notin [:: a; b], a \notin [:: b] & true]
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:uniq (alphal n)
uniq (merge leq (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) (behead (alphal n)))
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:uniq (alphal n)

uniq (merge leq (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) (behead (alphal n)))
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

(a * 1 \notin [:: b * 1]) && true
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c:nat
l:seq nat
U:forall i : nat, i \in c :: l -> 0 < i
cL:c \notin l
uL:uniq l
uniq (merge leq (if a * c \in c :: l then if b * c \in c :: l then [::] else [:: b * c] else a * c :: (if b * c \in c :: l then [::] else [:: b * c])) l)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c:nat
l:seq nat
U:forall i : nat, i \in c :: l -> 0 < i
cL:c \notin l
uL:uniq l

uniq (merge leq (if a * c \in c :: l then if b * c \in c :: l then [::] else [:: b * c] else a * c :: (if b * c \in c :: l then [::] else [:: b * c])) l)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c:nat
l:seq nat
U:forall i : nat, i \in c :: l -> 0 < i
cL:c \notin l
uL:uniq l
H1:a * c \in c :: l
H2:b * c \notin c :: l

b * c \notin l
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c:nat
l:seq nat
U:forall i : nat, i \in c :: l -> 0 < i
cL:c \notin l
uL:uniq l
H1:a * c \notin c :: l
H2:b * c \in c :: l
a * c \notin l
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c:nat
l:seq nat
U:forall i : nat, i \in c :: l -> 0 < i
cL:c \notin l
uL:uniq l
H1:a * c \notin c :: l
H2:b * c \notin c :: l
(a * c \notin b * c :: l) && (b * c \notin l)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c:nat
l:seq nat
U:forall i : nat, i \in c :: l -> 0 < i
cL:c \notin l
uL:uniq l
H1:a * c \in c :: l
H2:b * c \notin c :: l

b * c \notin l
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c:nat
l:seq nat
U:forall i : nat, i \in c :: l -> 0 < i
cL:c \notin l
uL:uniq l
H1:a * c \notin c :: l
H2:b * c \in c :: l
a * c \notin l
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c:nat
l:seq nat
U:forall i : nat, i \in c :: l -> 0 < i
cL:c \notin l
uL:uniq l
H1:a * c \notin c :: l
H2:b * c \notin c :: l
(a * c \notin b * c :: l) && (b * c \notin l)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c:nat
l:seq nat
U:forall i : nat, i \in c :: l -> 0 < i
cL:c \notin l
uL:uniq l
H1:a * c \notin c :: l
H2:b * c \in c :: l

a * c \notin l
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c:nat
l:seq nat
U:forall i : nat, i \in c :: l -> 0 < i
cL:c \notin l
uL:uniq l
H1:a * c \notin c :: l
H2:b * c \notin c :: l
(a * c \notin b * c :: l) && (b * c \notin l)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c:nat
l:seq nat
U:forall i : nat, i \in c :: l -> 0 < i
cL:c \notin l
uL:uniq l
H1:a * c \notin c :: l
H2:b * c \in c :: l

a * c \notin l
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c:nat
l:seq nat
U:forall i : nat, i \in c :: l -> 0 < i
cL:c \notin l
uL:uniq l
H1:a * c \notin c :: l
H2:b * c \notin c :: l
(a * c \notin b * c :: l) && (b * c \notin l)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c:nat
l:seq nat
U:forall i : nat, i \in c :: l -> 0 < i
cL:c \notin l
uL:uniq l
H1:a * c \notin c :: l
H2:b * c \notin c :: l

(a * c \notin b * c :: l) && (b * c \notin l)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c:nat
l:seq nat
U:forall i : nat, i \in c :: l -> 0 < i
cL:c \notin l
uL:uniq l

(a * c != b * c) && true && true
by rewrite eqn_mul2r negb_or !neq_ltn aLb U ?orbT // inE eqxx. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

alpha n < alpha n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

alpha n < alpha n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

head 1 (alphal n) < head 1 (merge leq (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) (behead (alphal n)))
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat

h < head 1 (merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)))
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat

0 < h
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
h < head 1 (merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)))
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat

0 < head 1 (alphal n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
h < head 1 (merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)))
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
c:nat
l:seq nat

c \in c :: l
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
h < head 1 (merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)))
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h

h < head 1 (merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)))
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat

h < head 1 l1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat

head 1 l1 \in l1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
h < head 1 l1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat

merge leq (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) (behead (alphal n)) != [::] -> head 1 l1 \in l1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
h < head 1 l1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1

h < head 1 l1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
hLi:forall i : nat_eqType, i \in l1 -> h < i

h < head 1 l1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
i \in l1 -> h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType

i \in l1 -> h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType

(i \in (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h]))) || (i \in behead (alphal n)) -> h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
hLi1:i \in behead (alphal n) -> h < i

(i \in (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h]))) || (i \in behead (alphal n)) -> h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)
h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
hLi1:i \in behead (alphal n) -> h < i
H1:a * h \in alphal n
H2:b * h \notin alphal n

(i == b * h) || (i \in behead (alphal n)) -> h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
hLi1:i \in behead (alphal n) -> h < i
H1:a * h \notin alphal n
H2:b * h \in alphal n
(i == a * h) || (i \in behead (alphal n)) -> h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
hLi1:i \in behead (alphal n) -> h < i
H1:a * h \notin alphal n
H2:b * h \notin alphal n
(i == a * h) || (i == b * h) || (i \in behead (alphal n)) -> h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)
h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
hLi1:i \in behead (alphal n) -> h < i
H1:a * h \in alphal n
H2:b * h \notin alphal n

(i == b * h) || (i \in behead (alphal n)) -> h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
hLi1:i \in behead (alphal n) -> h < i
H1:a * h \notin alphal n
H2:b * h \in alphal n
(i == a * h) || (i \in behead (alphal n)) -> h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
hLi1:i \in behead (alphal n) -> h < i
H1:a * h \notin alphal n
H2:b * h \notin alphal n
(i == a * h) || (i == b * h) || (i \in behead (alphal n)) -> h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)
h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
hLi1:i \in behead (alphal n) -> h < i
H1:a * h \notin alphal n
H2:b * h \in alphal n

(i == a * h) || (i \in behead (alphal n)) -> h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
hLi1:i \in behead (alphal n) -> h < i
H1:a * h \notin alphal n
H2:b * h \notin alphal n
(i == a * h) || (i == b * h) || (i \in behead (alphal n)) -> h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)
h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
hLi1:i \in behead (alphal n) -> h < i
H1:a * h \notin alphal n
H2:b * h \in alphal n

(i == a * h) || (i \in behead (alphal n)) -> h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
hLi1:i \in behead (alphal n) -> h < i
H1:a * h \notin alphal n
H2:b * h \notin alphal n
(i == a * h) || (i == b * h) || (i \in behead (alphal n)) -> h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)
h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
hLi1:i \in behead (alphal n) -> h < i
H1:a * h \notin alphal n
H2:b * h \notin alphal n

(i == a * h) || (i == b * h) || (i \in behead (alphal n)) -> h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)
h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)

h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)

subseq [:: h; i] (alphal n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)
hsSa:subseq [:: h; i] (alphal n)
h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)

subseq [:: h; i] (h :: behead (alphal n))
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)
alphal n = h :: behead (alphal n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)
hsSa:subseq [:: h; i] (alphal n)
h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)

subseq [:: i] (behead (alphal n))
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)
alphal n = h :: behead (alphal n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)
hsSa:subseq [:: h; i] (alphal n)
h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)

alphal n = h :: behead (alphal n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)
hsSa:subseq [:: h; i] (alphal n)
h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)
hsSa:subseq [:: h; i] (alphal n)

h < i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)
hsSa:subseq [:: h; i] (alphal n)

(h != i) && (h <= i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)
hsSa:subseq [:: h; i] (alphal n)

(h <= i) && true -> (h != i) && (h <= i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)
hsSa:subseq [:: h; i] (alphal n)

(h != i) && true
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
hP:0 < h
l1:=merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)):seq nat
hIl1:head 1 l1 \in l1
i:nat_eqType
H:i \in behead (alphal n)
hsSa:subseq [:: h; i] (alphal n)

(h \notin [:: i]) && true -> (h != i) && true
by rewrite inE. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat

m < n -> alpha m < alpha n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat

m < n -> alpha m < alpha n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
IH:m < n -> alpha m < alpha n

m < n.+1 -> alpha m < alpha n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
IH:m < n -> alpha m < alpha n
F:alpha n < alpha n.+1

m < n.+1 -> alpha m < alpha n.+1
by rewrite ltnS leq_eqVlt => /orP[/eqP->| /IH /ltn_trans-> //]. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b

injective alpha
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b

injective alpha
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
amEan:alpha m = alpha n

m == n
by case: ltngtP => // /alpha_mono; rewrite amEan ltnn. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

0 < alpha n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

0 < alpha n
by case: n => // n; apply: leq_ltn_trans (alpha_ltn _). Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

n < alpha n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

n < alpha n
by elim: n => // n IH; apply: leq_trans (alpha_ltn _). Qed. Definition isAB i := exists m, i = a ^ m.1 * b ^ m.2.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i:nat

isAB (a ^ i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i:nat

isAB (a ^ i)
by exists (i, 0); rewrite muln1. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i:nat

isAB (b ^ i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i:nat

isAB (b ^ i)
by exists (0, i); rewrite mul1n. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i:nat

isAB i -> isAB (a * i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i:nat

isAB i -> isAB (a * i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i, m1, m2:nat

a * (a ^ m1 * b ^ m2) = a ^ (m1.+1, m2).1 * b ^ (m1.+1, m2).2
by rewrite !mulnA expnS. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i:nat

isAB i -> isAB (b * i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i:nat

isAB i -> isAB (b * i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i, m1, m2:nat

b * (a ^ m1 * b ^ m2) = a ^ (m1, m2.+1).1 * b ^ (m1, m2.+1).2
by rewrite mulnCA expnS. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
i:nat_eqType

i \in alphal n -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
i:nat_eqType

i \in alphal n -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i:nat

[|| i == 1, i == a | i == b] -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
i \in (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) ++ behead (alphal n) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i:nat

isAB a
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i:nat
isAB b
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
i \in (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) ++ behead (alphal n) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i:nat

isAB b
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
i \in (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) ++ behead (alphal n) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat

i \in (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) ++ behead (alphal n) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat

i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
i \in (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) ++ behead (alphal n) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2

i \in (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) ++ behead (alphal n) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2

exists m : nat * nat, head 1 (alphal n) = a ^ m.1 * b ^ m.2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
i \in (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) ++ behead (alphal n) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
c:nat
l:seq nat
F1:forall i : nat, i \in c :: l -> isAB i

exists m : nat * nat, c = a ^ m.1 * b ^ m.2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
i \in (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) ++ behead (alphal n) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2

i \in (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) ++ behead (alphal n) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2

i \in behead (alphal n) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
(i == b * head 1 (alphal n)) || (i \in behead (alphal n)) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
(i == a * head 1 (alphal n)) || (i \in behead (alphal n)) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
[|| i == a * head 1 (alphal n), i == b * head 1 (alphal n) | i \in behead (alphal n)] -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2

i \in behead (alphal n) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
(i == b * head 1 (alphal n)) || (i \in behead (alphal n)) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
(i == a * head 1 (alphal n)) || (i \in behead (alphal n)) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
[|| i == a * head 1 (alphal n), i == b * head 1 (alphal n) | i \in behead (alphal n)] -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2

(i == b * head 1 (alphal n)) || (i \in behead (alphal n)) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
(i == a * head 1 (alphal n)) || (i \in behead (alphal n)) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
[|| i == a * head 1 (alphal n), i == b * head 1 (alphal n) | i \in behead (alphal n)] -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2

(i == b * head 1 (alphal n)) || (i \in behead (alphal n)) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
(i == a * head 1 (alphal n)) || (i \in behead (alphal n)) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
[|| i == a * head 1 (alphal n), i == b * head 1 (alphal n) | i \in behead (alphal n)] -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2

(i == b * head 1 (alphal n)) || (i \in behead (alphal n)) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
(i == a * head 1 (alphal n)) || (i \in behead (alphal n)) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
[|| i == a * head 1 (alphal n), i == b * head 1 (alphal n) | i \in behead (alphal n)] -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2

b * head 1 (alphal n) = a ^ (m1, m2.+1).1 * b ^ (m1, m2.+1).2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
(i == a * head 1 (alphal n)) || (i \in behead (alphal n)) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
[|| i == a * head 1 (alphal n), i == b * head 1 (alphal n) | i \in behead (alphal n)] -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2

(i == a * head 1 (alphal n)) || (i \in behead (alphal n)) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
[|| i == a * head 1 (alphal n), i == b * head 1 (alphal n) | i \in behead (alphal n)] -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2

(i == a * head 1 (alphal n)) || (i \in behead (alphal n)) -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
[|| i == a * head 1 (alphal n), i == b * head 1 (alphal n) | i \in behead (alphal n)] -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2

a * head 1 (alphal n) = a ^ (m1.+1, m2).1 * b ^ (m1.+1, m2).2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
[|| i == a * head 1 (alphal n), i == b * head 1 (alphal n) | i \in behead (alphal n)] -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2

[|| i == a * head 1 (alphal n), i == b * head 1 (alphal n) | i \in behead (alphal n)] -> isAB i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2

isAB (a * head 1 (alphal n))
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2
isAB (b * head 1 (alphal n))
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, i \in alphal n -> isAB i
i:nat
F:i \in behead (alphal n) -> exists m : nat * nat, i = a ^ m.1 * b ^ m.2
m1, m2:nat
Hm:head 1 (alphal n) = a ^ (m1, m2).1 * b ^ (m1, m2).2

isAB (b * head 1 (alphal n))
by exists (m1, m2.+1); rewrite /= Hm mulnCA expnS. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

isAB (alpha n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

isAB (alpha n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

isAB (head 1 (alphal n))
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c:nat
l:seq nat

(c \in c :: l -> isAB c) -> isAB c
by apply; rewrite inE eqxx. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
i:nat_eqType

i \in alphal n -> i != alpha n -> i \in alphal n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
i:nat_eqType

i \in alphal n -> i != alpha n -> i \in alphal n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
i:nat_eqType

0 < alpha n -> i \in alphal n -> i != alpha n -> i \in alphal n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
i:nat_eqType

0 < head 1 (alphal n) -> i \in alphal n -> i != head 1 (alphal n) -> (i \in behead (alphal n)) || (i \in (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])))
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
i:nat_eqType
c:nat
l:seq nat
cP:0 < c

i \in c :: l -> i != c -> (i \in l) || (i \in (if a * c \in c :: l then if b * c \in c :: l then [::] else [:: b * c] else a * c :: (if b * c \in c :: l then [::] else [:: b * c])))
by rewrite inE => /orP[/eqP->|->//]; rewrite eqxx. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

alpha n \in alphal n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

alpha n \in alphal n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

alphal n != [::] -> alpha n \in alphal n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, c:nat
l:seq nat

true -> c \in c :: l
by rewrite inE eqxx. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
i:nat_eqType

i \in alphal n.+1 -> i != a * alpha n -> i != b * alpha n -> i \in alphal n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
i:nat_eqType

i \in alphal n.+1 -> i != a * alpha n -> i != b * alpha n -> i \in alphal n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
i:nat_eqType

i \in merge leq (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) (behead (alphal n)) -> i != a * head 1 (alphal n) -> i != b * head 1 (alphal n) -> i \in alphal n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
i:nat_eqType
h:=head 1 (alphal n):nat

i \in merge leq (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) (behead (alphal n)) -> i != a * h -> i != b * h -> i \in alphal n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
i:nat_eqType
h:=head 1 (alphal n):nat

i \in behead (alphal n) -> i != a * h -> i != b * h -> i \in alphal n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
i:nat_eqType
h:=head 1 (alphal n):nat
i \in (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) -> i != a * h -> i != b * h -> i \in alphal n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
i:nat_eqType
h:=head 1 (alphal n):nat

i \in (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) -> i != a * h -> i != b * h -> i \in alphal n
by (do 2 case: (_ \in alphal _); rewrite //= ?inE) => [/eqP->|/eqP->|/orP[/eqP->|/eqP->]]; rewrite eqxx. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

a * alpha n \in alphal n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

a * alpha n \in alphal n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

0 < alpha n -> a * alpha n \in alphal n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

(a * alpha n \in alphal n -> a * alpha n != alpha n -> a * alpha n \in alphal n.+1) -> 0 < alpha n -> a * alpha n \in alphal n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

(a * head 1 (alphal n) \in alphal n -> a * head 1 (alphal n) != head 1 (alphal n) -> a * head 1 (alphal n) \in (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) ++ behead (alphal n)) -> 0 < head 1 (alphal n) -> a * head 1 (alphal n) \in (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) ++ behead (alphal n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat

(a * h \in alphal n -> a * h != h -> a * h \in (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) ++ behead (alphal n)) -> 0 < h -> a * h \in (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) ++ behead (alphal n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
H:a * h \in alphal n
H1:true -> a * h != h -> a * h \in (if b * h \in alphal n then [::] else [:: b * h]) ++ behead (alphal n)
H2:0 < h

a * h \in (if b * h \in alphal n then [::] else [:: b * h]) ++ behead (alphal n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
a * h \notin alphal n -> (false -> a * h != h -> a * h \in (a * h :: (if b * h \in alphal n then [::] else [:: b * h])) ++ behead (alphal n)) -> 0 < h -> a * h \in (a * h :: (if b * h \in alphal n then [::] else [:: b * h])) ++ behead (alphal n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
H:a * h \in alphal n
H2:0 < h

a * h != h
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
a * h \notin alphal n -> (false -> a * h != h -> a * h \in (a * h :: (if b * h \in alphal n then [::] else [:: b * h])) ++ behead (alphal n)) -> 0 < h -> a * h \in (a * h :: (if b * h \in alphal n then [::] else [:: b * h])) ++ behead (alphal n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat

a * h \notin alphal n -> (false -> a * h != h -> a * h \in (a * h :: (if b * h \in alphal n then [::] else [:: b * h])) ++ behead (alphal n)) -> 0 < h -> a * h \in (a * h :: (if b * h \in alphal n then [::] else [:: b * h])) ++ behead (alphal n)
by rewrite mem_cat inE eqxx. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

b * alpha n \in alphal n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

b * alpha n \in alphal n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

0 < alpha n -> b * alpha n \in alphal n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

(b * alpha n \in alphal n -> b * alpha n != alpha n -> b * alpha n \in alphal n.+1) -> 0 < alpha n -> b * alpha n \in alphal n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

(b * head 1 (alphal n) \in alphal n -> b * head 1 (alphal n) != head 1 (alphal n) -> b * head 1 (alphal n) \in (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) ++ behead (alphal n)) -> 0 < head 1 (alphal n) -> b * head 1 (alphal n) \in (if a * head 1 (alphal n) \in alphal n then if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)] else a * head 1 (alphal n) :: (if b * head 1 (alphal n) \in alphal n then [::] else [:: b * head 1 (alphal n)])) ++ behead (alphal n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat

(b * h \in alphal n -> b * h != h -> b * h \in (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) ++ behead (alphal n)) -> 0 < h -> b * h \in (if a * h \in alphal n then if b * h \in alphal n then [::] else [:: b * h] else a * h :: (if b * h \in alphal n then [::] else [:: b * h])) ++ behead (alphal n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
H:b * h \in alphal n
H1:true -> b * h != h -> b * h \in (if a * h \in alphal n then [::] else [:: a * h]) ++ behead (alphal n)
H2:0 < h

b * h \in (if a * h \in alphal n then [::] else [:: a * h]) ++ behead (alphal n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
b * h \notin alphal n -> (false -> b * h != h -> b * h \in (if a * h \in alphal n then [:: b * h] else [:: a * h; b * h]) ++ behead (alphal n)) -> 0 < h -> b * h \in (if a * h \in alphal n then [:: b * h] else [:: a * h; b * h]) ++ behead (alphal n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
H:b * h \in alphal n
H2:0 < h

b * h != h
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat
b * h \notin alphal n -> (false -> b * h != h -> b * h \in (if a * h \in alphal n then [:: b * h] else [:: a * h; b * h]) ++ behead (alphal n)) -> 0 < h -> b * h \in (if a * h \in alphal n then [:: b * h] else [:: a * h; b * h]) ++ behead (alphal n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
h:=head 1 (alphal n):nat

b * h \notin alphal n -> (false -> b * h != h -> b * h \in (if a * h \in alphal n then [:: b * h] else [:: a * h; b * h]) ++ behead (alphal n)) -> 0 < h -> b * h \in (if a * h \in alphal n then [:: b * h] else [:: a * h; b * h]) ++ behead (alphal n)
by have [] := boolP (a * _ \in alphal n); rewrite mem_cat !inE eqxx // orbT. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat

{k : nat | alpha k = a ^ m * b ^ n}
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat

{k : nat | alpha k = a ^ m * b ^ n}
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool

{k : nat | alpha k = a ^ m * b ^ n}
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool

exists n : nat, P n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
{k : nat | alpha k = a ^ m * b ^ n}
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n

{k : nat | alpha k = a ^ m * b ^ n}
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n

0 < a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
{k : nat | alpha k = a ^ m * b ^ n}
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n

{k : nat | alpha k = a ^ m * b ^ n}
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
p:nat

P p -> p <= alpha (a ^ m * b ^ n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
{k : nat | alpha k = a ^ m * b ^ n}
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
p:nat
q:nat_eqType
qIa:q \in alphal p

q %| a ^ m * b ^ n -> p <= alpha (a ^ m * b ^ n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
{k : nat | alpha k = a ^ m * b ^ n}
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
p:nat
q:nat_eqType
qIa:q \in alphal p
F:alpha p <= q

q %| a ^ m * b ^ n -> p <= alpha (a ^ m * b ^ n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
p:nat
q:nat_eqType
qIa:q \in alphal p
alpha p <= q
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
{k : nat | alpha k = a ^ m * b ^ n}
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
p:nat
q:nat_eqType
qIa:q \in alphal p
F:alpha p <= q
H:q <= a ^ m * b ^ n

p <= alpha (a ^ m * b ^ n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
p:nat
q:nat_eqType
qIa:q \in alphal p
alpha p <= q
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
{k : nat | alpha k = a ^ m * b ^ n}
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
p:nat
q:nat_eqType
qIa:q \in alphal p
F:alpha p <= q
H:q <= a ^ m * b ^ n

alpha p <= alpha (a ^ m * b ^ n)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
p:nat
q:nat_eqType
qIa:q \in alphal p
alpha p <= q
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
{k : nat | alpha k = a ^ m * b ^ n}
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
p:nat
q:nat_eqType
qIa:q \in alphal p

alpha p <= q
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
{k : nat | alpha k = a ^ m * b ^ n}
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
p:nat
q:nat_eqType
qIa:q \in alphal p

sorted leq (alphal p) -> head 1 (alphal p) <= q
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
{k : nat | alpha k = a ^ m * b ^ n}
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
p:nat
q:nat_eqType
a1:nat
l:seq nat

q \in a1 :: l -> path leq a1 l -> a1 <= q
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
{k : nat | alpha k = a ^ m * b ^ n}
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)

{k : nat | alpha k = a ^ m * b ^ n}
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)

alpha (ex_maxn F1 F3) = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Hx:x %| a ^ m * b ^ n
Fx:forall j : nat, P j -> j <= i

alpha i = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Hx:x %| a ^ m * b ^ n
Fx:forall j : nat, P j -> j <= i

~~ P i.+1 -> alpha i = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Hx:x %| a ^ m * b ^ n
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}

alpha i = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Hx:x %| a ^ m * b ^ n
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}

x = alpha i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Hx:x %| a ^ m * b ^ n
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
alpha i = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Hx:x %| a ^ m * b ^ n
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i

alpha i = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Hx:x %| a ^ m * b ^ n
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2

alpha i = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Hx:x %| a ^ m * b ^ n
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
m2, n2:nat

coprime (a ^ m2) (b ^ n2)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Hx:x %| a ^ m * b ^ n
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
Cabe:forall m2 n2 : nat, coprime (a ^ m2) (b ^ n2)
alpha i = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Hx:x %| a ^ m * b ^ n
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
n2, m2:nat

coprime (a ^ m2.+1) (b ^ n2)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Hx:x %| a ^ m * b ^ n
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
Cabe:forall m2 n2 : nat, coprime (a ^ m2) (b ^ n2)
alpha i = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Hx:x %| a ^ m * b ^ n
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
m2, n2:nat

coprime (a ^ m2.+1) (b ^ n2.+1)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Hx:x %| a ^ m * b ^ n
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
Cabe:forall m2 n2 : nat, coprime (a ^ m2) (b ^ n2)
alpha i = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Hx:x %| a ^ m * b ^ n
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
Cabe:forall m2 n2 : nat, coprime (a ^ m2) (b ^ n2)

alpha i = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
Cabe:forall m2 n2 : nat, coprime (a ^ m2) (b ^ n2)

x %| a ^ m * b ^ n -> alpha i = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
Cabe:forall m2 n2 : nat, coprime (a ^ m2) (b ^ n2)

(a ^ m1 %| a ^ m * b ^ n) && (b ^ n1 %| a ^ m * b ^ n) -> a ^ m1 * b ^ n1 = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
Cabe:forall m2 n2 : nat, coprime (a ^ m2) (b ^ n2)

(a ^ m1 %| a ^ m) && (b ^ n1 %| b ^ n) -> a ^ m1 * b ^ n1 = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
Cabe:forall m2 n2 : nat, coprime (a ^ m2) (b ^ n2)

(m1 <= m) && (n1 <= n) -> a ^ m1 * b ^ n1 = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
Cabe:forall m2 n2 : nat, coprime (a ^ m2) (b ^ n2)
H1:m1 < m
H2:n1 <= n

a ^ m1 * b ^ n1 = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
Cabe:forall m2 n2 : nat, coprime (a ^ m2) (b ^ n2)
mEm1:m1 = m
n1 <= n -> a ^ m1 * b ^ n1 = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
Cabe:forall m2 n2 : nat, coprime (a ^ m2) (b ^ n2)
H1:m1 < m
H2:n1 <= n

a * alpha i %| a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
Cabe:forall m2 n2 : nat, coprime (a ^ m2) (b ^ n2)
mEm1:m1 = m
n1 <= n -> a ^ m1 * b ^ n1 = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
Cabe:forall m2 n2 : nat, coprime (a ^ m2) (b ^ n2)
H1:m1 < m
H2:n1 <= n

a ^ m1.+1 * b ^ n1 %| a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
Cabe:forall m2 n2 : nat, coprime (a ^ m2) (b ^ n2)
mEm1:m1 = m
n1 <= n -> a ^ m1 * b ^ n1 = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
Cabe:forall m2 n2 : nat, coprime (a ^ m2) (b ^ n2)
mEm1:m1 = m

n1 <= n -> a ^ m1 * b ^ n1 = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
Cabe:forall m2 n2 : nat, coprime (a ^ m2) (b ^ n2)
mEm1:m1 = m
H1:n1 < n

a ^ m1 * b ^ n1 = a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
Cabe:forall m2 n2 : nat, coprime (a ^ m2) (b ^ n2)
mEm1:m1 = m
H1:n1 < n

b * alpha i %| a ^ m * b ^ n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
m, n:nat
P:=fun p : nat => has (dvdn^~ (a ^ m * b ^ n)) (alphal p):nat -> bool
F1:exists n : nat, P n
F2:0 < a ^ m * b ^ n
F3:forall p : nat, P p -> p <= alpha (a ^ m * b ^ n)
i:nat
x:nat_eqType
xIa:x \in alphal i
Fx:forall j : nat, P j -> j <= i
FF:{in alphal i.+1, forall x : nat_eqType, ~~ (x %| a ^ m * b ^ n)}
F4:x = alpha i
m1, n1:nat
F5:alpha i = a ^ (m1, n1).1 * b ^ (m1, n1).2
Cabe:forall m2 n2 : nat, coprime (a ^ m2) (b ^ n2)
mEm1:m1 = m
H1:n1 < n

a ^ m * b ^ n1.+1 %| a ^ m * b ^ n
by apply: dvdn_mul; apply: dvdn_exp2l. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i, v:nat

isAB v -> alpha i < v -> alpha i.+1 <= v
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i, v:nat

isAB v -> alpha i < v -> alpha i.+1 <= v
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i, v, m1, m2:nat

alpha i < a ^ (m1, m2).1 * b ^ (m1, m2).2 -> alpha i.+1 <= a ^ (m1, m2).1 * b ^ (m1, m2).2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i, v, m1, m2, j:nat
iLj:alpha i < alpha j

alpha i.+1 <= alpha j
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i, v, m1, m2, j:nat
iLj:alpha i < alpha j

i < j -> alpha i.+1 <= alpha j
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i, v, m1, m2, j:nat
iLj:alpha i < alpha j
H:j < i.+1
alpha i.+1 <= alpha j
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i, v, m1, m2, j:nat
iLj:alpha i < alpha j
H:j < i.+1

alpha i.+1 <= alpha j
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i, v, m1, m2, j:nat

j < i.+1 -> ~~ (alpha j <= alpha i) -> alpha i.+1 <= alpha j
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i, v, m1, m2, j:nat

~~ (alpha i <= alpha i) -> alpha i.+1 <= alpha i
by rewrite leqnn. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i:nat

alpha i.+1 <= a * alpha i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i:nat

alpha i.+1 <= a * alpha i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i:nat

alpha i < a * alpha i
by rewrite -[X in X < _]mul1n ltn_mul2r alpha_gt0. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i, v:nat

isAB v -> v < alpha i.+1 -> v <= alpha i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i, v:nat

isAB v -> v < alpha i.+1 -> v <= alpha i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i, v:nat
isAB:Main.isAB v

(alpha i < v -> alpha i.+1 <= v) -> v < alpha i.+1 -> v <= alpha i
by do 2 case: leqP => // _. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat

i <= n -> \sum_(j < n) alpha j <= a * (\sum_(j < n - i) alpha j) + \sum_(j < i) b ^ j
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat

i <= n -> \sum_(j < n) alpha j <= a * (\sum_(j < n - i) alpha j) + \sum_(j < i) b ^ j
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n

\sum_(j < n) alpha j <= a * (\sum_(j < n - i) alpha j) + \sum_(j < i) b ^ j
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n

\sum_(0 <= i < n) alpha i <= \sum_(0 <= i < n - i) a * alpha i + \sum_(0 <= i < i) b ^ i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n
aux:forall u v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0

\sum_(0 <= i < n) alpha i <= \sum_(0 <= i < n - i) a * alpha i + \sum_(0 <= i < i) b ^ i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n
forall u v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n
aux:forall u v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0

\sum_(0 <= i < 0 + n) alpha i <= \sum_(0 <= i < 0 + (n - i)) a * alpha i + \sum_(0 <= i < 0 + i) b ^ i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n
forall u v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n

n = n - i + i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n
(n - i != 0) * alpha 0 <= a * alpha 0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n
(i != 0) * alpha 0 <= b ^ 0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n
forall u v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n

n = n - i + i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n
(n - i != 0) * alpha 0 <= a * alpha 0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n
(i != 0) * alpha 0 <= b ^ 0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n
forall u v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n

(n - i != 0) * alpha 0 <= a * alpha 0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n
(i != 0) * alpha 0 <= b ^ 0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n
forall u v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n

(n - i != 0) * alpha 0 <= a * alpha 0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n
(i != 0) * alpha 0 <= b ^ 0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n
forall u v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n

(i != 0) * alpha 0 <= b ^ 0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n
forall u v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLn:i <= n

forall u v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i, j, k:nat

(0 != 0) * alpha i <= b ^ k -> \sum_(i <= i0 < i + 0) alpha i0 <= \sum_(j <= i < j + 0) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
w, i, j, k:nat
uvw:u.+1 = 0 + w.+1
aM1:(0 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + 0) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i, j, k:nat

(0 != 0) * alpha i <= b ^ k -> \sum_(i <= i0 < i + 0) alpha i0 <= \sum_(j <= i < j + 0) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
w, i, j, k:nat
uvw:u.+1 = 0 + w.+1
aM1:(0 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + 0) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
w, i, j, k:nat
uvw:u.+1 = 0 + w.+1
aM1:(0 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k

\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + 0) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
w, i, j, k:nat
uvw:u.+1 = 0 + w.+1
aM1:(0 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k

\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + 0) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
w, i, j, k:nat
uvw:u.+1 = 0 + w.+1
aM1:(0 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k

alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <= \sum_(j <= i < j + 0) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
w, i, j, k:nat
uvw:u.+1 = 0 + w.+1
aM1:(0 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k

alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <= \sum_(j <= i < j + 0) a * alpha i + (b ^ k + \sum_(k.+1 <= i < k + w.+1) b ^ i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
w, i, j, k:nat
uvw:u.+1 = 0 + w.+1
aM1:(0 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k

alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <= b ^ k + (\sum_(j <= i < j + 0) a * alpha i + \sum_(k.+1 <= i < k + w.+1) b ^ i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
w, i, j, k:nat
uvw:u.+1 = 0 + w.+1
aM1:(0 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k

\sum_(i.+1 <= i < i + u.+1) alpha i <= \sum_(j <= i < j + 0) a * alpha i + \sum_(k.+1 <= i < k + w.+1) b ^ i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
w, i, j, k:nat
uvw:u.+1 = 0 + w.+1
aM1:(0 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k

\sum_(i.+1 <= i < i.+1 + u) alpha i <= \sum_(j <= i < j + 0) a * alpha i + \sum_(k.+1 <= i < k.+1 + w) b ^ i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, w, i, j, k:nat
uvw:u.+1 = 0 + w.+1
aM1:(0 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k

(w != 0) * alpha i.+1 <= b ^ k.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, w, i, j, k:nat
uvw:u.+1 = 0 + w.+1
aM1:(0 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
w1:nat

(w1.+1 != 0) * alpha i.+1 <= b ^ k.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, w, i, j, k:nat
uvw:u.+1 = 0 + w.+1
aM1:(0 != 0) * alpha i <= a * alpha j
w1:nat
aM2:alpha i <= b ^ k

alpha i.+1 <= b ^ k.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, w, i, j, k:nat
uvw:u.+1 = 0 + w.+1
aM1:(0 != 0) * alpha i <= a * alpha j
w1:nat
aM2:alpha i <= b ^ k

a * alpha i <= b ^ k.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, w, i, j, k:nat
uvw:u.+1 = 0 + w.+1
aM1:(0 != 0) * alpha i <= a * alpha j
w1:nat
aM2:alpha i <= b ^ k
alpha i.+1 <= a * alpha i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, w, i, j, k:nat
uvw:u.+1 = 0 + w.+1
aM1:(0 != 0) * alpha i <= a * alpha j
w1:nat
aM2:alpha i <= b ^ k

alpha i.+1 <= a * alpha i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k

\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k

\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k

alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k

alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <= a * alpha j + \sum_(j.+1 <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k

alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <= a * alpha j + (\sum_(j.+1 <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k

\sum_(i.+1 <= i < i + u.+1) alpha i <= \sum_(j.+1 <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k

\sum_(i.+1 <= i < i.+1 + u) alpha i <= \sum_(j.+1 <= i < j.+1 + v) a * alpha i + \sum_(k <= i0 < k + 0) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k

(v != 0) * alpha i.+1 <= a * alpha j.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k
v1:nat

(v1.+1 != 0) * alpha i.+1 <= a * alpha j.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM2:(0 != 0) * alpha i <= b ^ k
v1:nat
aM1:alpha i <= a * alpha j

alpha i.+1 <= a * alpha j.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM2:(0 != 0) * alpha i <= b ^ k
v1:nat
aM1:alpha i <= a * alpha j

alpha i < a * alpha j.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM2:(0 != 0) * alpha i <= b ^ k
v1:nat

a * alpha j < a * alpha j.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k

\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k

alpha i.+1 <= a * alpha j.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM1:alpha i <= a * alpha j

alpha i.+1 <= a * alpha j.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM1:alpha i <= a * alpha j

alpha i < a * alpha j.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM2:(w.+1 != 0) * alpha i <= b ^ k

a * alpha j < a * alpha j.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1

\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1

a * alpha j <= b ^ k -> \sum_(i <= i1 < i + u.+1) alpha i1 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i1 < k + w.+1) b ^ i1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1

a * alpha j <= b ^ k -> \sum_(i <= i1 < i + u.+1) alpha i1 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i1 < k + w.+1) b ^ i1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaEb:a * alpha j = b ^ k

\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaLb:a * alpha j < b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaEb:a * alpha j = b ^ k

a %| b ^ k -> \sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaLb:a * alpha j < b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaEb:a * alpha j = b ^ k

gcdn a (b ^ k) = a -> \sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaLb:a * alpha j < b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaEb:a * alpha j = b ^ k

1 = a -> \sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaLb:a * alpha j < b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaLb:a * alpha j < b ^ k

\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaLb:a * alpha j < b ^ k

\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaLb:a * alpha j < b ^ k

alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaLb:a * alpha j < b ^ k

alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <= a * alpha j + \sum_(j.+1 <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaLb:a * alpha j < b ^ k

alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <= a * alpha j + (\sum_(j.+1 <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaLb:a * alpha j < b ^ k

\sum_(i.+1 <= i < i + u.+1) alpha i <= \sum_(j.+1 <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaLb:a * alpha j < b ^ k

\sum_(i.+1 <= i < i.+1 + u) alpha i <= \sum_(j.+1 <= i < j.+1 + v) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaLb:a * alpha j < b ^ k

(v != 0) * alpha i.+1 <= a * alpha j.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaLb:a * alpha j < b ^ k
(w.+1 != 0) * alpha i.+1 <= b ^ k
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaLb:a * alpha j < b ^ k
v1:nat

(v1.+1 != 0) * alpha i.+1 <= a * alpha j.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaLb:a * alpha j < b ^ k
(w.+1 != 0) * alpha i.+1 <= b ^ k
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
aaLb:a * alpha j < b ^ k

(w.+1 != 0) * alpha i.+1 <= b ^ k
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM3:alpha i.+1 <= a * alpha j.+1
aaLb:a * alpha j < b ^ k
aM1:alpha i <= a * alpha j
aM2:alpha i <= b ^ k

alpha i.+1 <= b ^ k
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM3:alpha i.+1 <= a * alpha j.+1
aaLb:a * alpha j < b ^ k
aM1:alpha i <= a * alpha j
aM2:alpha i <= b ^ k

alpha i < b ^ k
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j

\sum_(i <= i0 < i + u.+1) alpha i0 <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j

alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k <= i0 < k + w.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j

alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <= \sum_(j <= i < j + v.+1) a * alpha i + (b ^ k + \sum_(k.+1 <= i < k + w.+1) b ^ i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j

alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <= b ^ k + (\sum_(j <= i < j + v.+1) a * alpha i + \sum_(k.+1 <= i < k + w.+1) b ^ i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j

\sum_(i.+1 <= i < i + u.+1) alpha i <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k.+1 <= i < k + w.+1) b ^ i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u:nat
IH:forall v w n n0 n1 : nat, u = v + w -> (v != 0) * alpha n <= a * alpha n0 -> (w != 0) * alpha n <= b ^ n1 -> \sum_(n <= i0 < n + u) alpha i0 <= \sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j

\sum_(i.+1 <= i < i.+1 + u) alpha i <= \sum_(j <= i < j + v.+1) a * alpha i + \sum_(k.+1 <= i < k.+1 + w) b ^ i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j

(v.+1 != 0) * alpha i.+1 <= a * alpha j
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
(w != 0) * alpha i.+1 <= b ^ k.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
aM1:alpha i <= a * alpha j
aM2:alpha i <= b ^ k

alpha i.+1 <= a * alpha j
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
(w != 0) * alpha i.+1 <= b ^ k.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
aM1:alpha i <= a * alpha j
aM2:alpha i <= b ^ k

isAB (a * alpha j)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
aM1:alpha i <= a * alpha j
aM2:alpha i <= b ^ k
alpha i < a * alpha j
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
(w != 0) * alpha i.+1 <= b ^ k.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
aM1:alpha i <= a * alpha j
aM2:alpha i <= b ^ k

alpha i < a * alpha j
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
(w != 0) * alpha i.+1 <= b ^ k.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j

(w != 0) * alpha i.+1 <= b ^ k.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
w1:nat

(w1.+1 != 0) * alpha i.+1 <= b ^ k.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
w1:nat
aM1:alpha i <= a * alpha j
aM2:alpha i <= b ^ k

alpha i.+1 <= b ^ k.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
w1:nat
aM1:alpha i <= a * alpha j
aM2:alpha i <= b ^ k

alpha i < b ^ k.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, u, v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
aM3:alpha i.+1 <= a * alpha j.+1
bLaa:b ^ k < a * alpha j
w1:nat
aM1:alpha i <= a * alpha j

b ^ k < b ^ k.+1
by rewrite ltn_exp2l. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b

alpha 0 = 1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b

alpha 0 = 1
by []. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b

alpha 1 = a
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b

alpha 1 = a
by rewrite /alpha /= !ifT //= muln1 !inE eqxx ?orbT. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
k, n:nat

b ^ k <= alpha n -> k <= n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
k, n:nat

b ^ k <= alpha n -> k <= n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
k:nat

b ^ k <= alpha 0 -> k <= 0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall k : nat, b ^ k <= alpha n -> k <= n
k:nat
Hk:b ^ k.+1 <= alpha n.+1
k < n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall k : nat, b ^ k <= alpha n -> k <= n
k:nat
Hk:b ^ k.+1 <= alpha n.+1

k < n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall k : nat, b ^ k <= alpha n -> k <= n
k:nat
Hk:b ^ k.+1 <= alpha n.+1

b ^ k < alpha n.+1
by apply: leq_trans Hk; rewrite ltn_exp2l. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

alpha n < b ^ n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat

alpha n < b ^ n.+1
by rewrite ltnNge; apply/negP => /b_exp_leq; rewrite ltnn. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
k, n:nat

b ^ k < alpha n -> k < n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
k, n:nat

b ^ k < alpha n -> k < n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
k, n:nat
H:b ^ k < alpha n.+1

k < n.+1
by rewrite ltnS; apply/b_exp_leq/(isAB_geq_alphaSn (isAB_bexp _)). Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat

b ^ i < alpha n.+1 < b ^ i.+1 -> alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat

b ^ i < alpha n.+1 < b ^ i.+1 -> alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1

alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1

i <= n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1

isAB (b ^ i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n

alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
y:nat
Hxy:alpha n.+1 = a ^ (0, y).1 * b ^ (0, y).2

alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLm:i <= n
y:nat
Hxy:alpha n.+1 = a ^ (0, y).1 * b ^ (0, y).2

b ^ i < a ^ (0, y).1 * b ^ (0, y).2 -> a ^ (0, y).1 * b ^ (0, y).2 < b ^ i.+1 -> a ^ (0, y).1 * b ^ (0, y).2 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
iLm:i <= n
y:nat
Hxy:alpha n.+1 = a ^ (0, y).1 * b ^ (0, y).2

i < (0, y).2 -> (0, y).2 <= i -> b ^ (0, y).2 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2

alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y

alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat

alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat

alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat

alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat

uniq la
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat

injective (fun j : 'I_n.+2 => alpha j)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
k1, k2:ordinal_eqType n.+2
H:alpha k1 = alpha k2

k1 = k2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
k1, k2:ordinal_eqType n.+2
H:alpha k1 = alpha k2

k1 <= k2 -> k1 = k2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la

alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2

alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat

alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat

alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat

alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1

alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1

lk =i la1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType

(u \in lk) = (a %| u) && (u \in la)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType

(exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & u = a * alpha x) -> (a %| u) && (u \in la)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
(a %| u) && (u \in la) -> exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & u = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
z:ordinal_eqType k.+1
Hz:z \in enum 'I_k.+1

a * alpha z \in la
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
(a %| u) && (u \in la) -> exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & u = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
z:ordinal_eqType k.+1
Hz:z \in enum 'I_k.+1
x1, y1:nat
Hx1y1:alpha z = a ^ (x1, y1).1 * b ^ (x1, y1).2

a * alpha z \in la
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
(a %| u) && (u \in la) -> exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & u = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
z:ordinal_eqType k.+1
Hz:z \in enum 'I_k.+1
x1, y1:nat
Hx1y1:alpha z = a ^ (x1, y1).1 * b ^ (x1, y1).2
t:nat
Ht:alpha t = a ^ x1.+1 * b ^ y1

a * alpha z \in la
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
(a %| u) && (u \in la) -> exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & u = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
z:ordinal_eqType k.+1
Hz:z \in enum 'I_k.+1
x1, y1:nat
Hx1y1:alpha z = a ^ (x1, y1).1 * b ^ (x1, y1).2
t:nat
Ht:alpha t = a ^ x1.+1 * b ^ y1
H1t:t < n.+2

a * alpha z \in la
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
z:ordinal_eqType k.+1
Hz:z \in enum 'I_k.+1
x1, y1:nat
Hx1y1:alpha z = a ^ (x1, y1).1 * b ^ (x1, y1).2
t:nat
Ht:alpha t = a ^ x1.+1 * b ^ y1
t < n.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
(a %| u) && (u \in la) -> exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & u = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
z:ordinal_eqType k.+1
Hz:z \in enum 'I_k.+1
x1, y1:nat
Hx1y1:alpha z = a ^ (x1, y1).1 * b ^ (x1, y1).2
t:nat
Ht:alpha t = a ^ x1.+1 * b ^ y1
H1t:t < n.+2

a * alpha z = alpha (Ordinal H1t)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
z:ordinal_eqType k.+1
Hz:z \in enum 'I_k.+1
x1, y1:nat
Hx1y1:alpha z = a ^ (x1, y1).1 * b ^ (x1, y1).2
t:nat
Ht:alpha t = a ^ x1.+1 * b ^ y1
t < n.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
(a %| u) && (u \in la) -> exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & u = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
z:ordinal_eqType k.+1
Hz:z \in enum 'I_k.+1
x1, y1:nat
Hx1y1:alpha z = a ^ (x1, y1).1 * b ^ (x1, y1).2
t:nat
Ht:alpha t = a ^ x1.+1 * b ^ y1

t < n.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
(a %| u) && (u \in la) -> exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & u = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
z:ordinal_eqType k.+1
Hz:z \in enum 'I_k.+1
x1, y1:nat
Hx1y1:alpha z = a ^ (x1, y1).1 * b ^ (x1, y1).2
t:nat
Ht:alpha t = a ^ x1.+1 * b ^ y1

alpha n.+1 < alpha t -> false
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
(a %| u) && (u \in la) -> exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & u = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
z:ordinal_eqType k.+1
Hz:z \in enum 'I_k.+1
x1, y1:nat
Hx1y1:alpha z = a ^ (x1, y1).1 * b ^ (x1, y1).2
t:nat
Ht:alpha t = a ^ x1.+1 * b ^ y1

~~ (a * alpha z <= a * alpha k) -> false
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
(a %| u) && (u \in la) -> exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & u = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
z:ordinal_eqType k.+1
Hz:z \in enum 'I_k.+1
x1, y1:nat
Hx1y1:alpha z = a ^ (x1, y1).1 * b ^ (x1, y1).2
t:nat
Ht:alpha t = a ^ x1.+1 * b ^ y1

~~ (alpha z <= alpha k) -> false
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
(a %| u) && (u \in la) -> exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & u = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
z:ordinal_eqType k.+1
Hz:z \in enum 'I_k.+1
x1, y1:nat
Hx1y1:alpha z = a ^ (x1, y1).1 * b ^ (x1, y1).2
t:nat
Ht:alpha t = a ^ x1.+1 * b ^ y1

z < k.+1 -> ~~ (alpha z <= alpha k) -> false
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
(a %| u) && (u \in la) -> exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & u = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType

(a %| u) && (u \in la) -> exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & u = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
v:ordinal_eqType n.+2
Hv:v \in enum 'I_n.+2
Ha:a %| alpha v

exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & alpha v = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
v:ordinal_eqType n.+2
Hv:v \in enum 'I_n.+2
Ha:a %| alpha v
y1:nat
Hx1y1:alpha v = a ^ (0, y1).1 * b ^ (0, y1).2

exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & alpha v = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
v:ordinal_eqType n.+2
Hv:v \in enum 'I_n.+2
Ha:a %| alpha v
x1, y1:nat
Hx1y1:alpha v = a ^ (x1.+1, y1).1 * b ^ (x1.+1, y1).2
exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & alpha v = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
v:ordinal_eqType n.+2
Hv:v \in enum 'I_n.+2
y1:nat
Hx1y1:alpha v = a ^ (0, y1).1 * b ^ (0, y1).2

gcdn a (b ^ y1) = a -> exists2 x : 'I_k.+1, x \in enum 'I_k.+1 & b ^ y1 = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
v:ordinal_eqType n.+2
Hv:v \in enum 'I_n.+2
Ha:a %| alpha v
x1, y1:nat
Hx1y1:alpha v = a ^ (x1.+1, y1).1 * b ^ (x1.+1, y1).2
exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & alpha v = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
v:ordinal_eqType n.+2
Hv:v \in enum 'I_n.+2
y1:nat
Hx1y1:alpha v = a ^ (0, y1).1 * b ^ (0, y1).2

1 = a -> exists2 x : 'I_k.+1, x \in enum 'I_k.+1 & b ^ y1 = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
v:ordinal_eqType n.+2
Hv:v \in enum 'I_n.+2
Ha:a %| alpha v
x1, y1:nat
Hx1y1:alpha v = a ^ (x1.+1, y1).1 * b ^ (x1.+1, y1).2
exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & alpha v = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
v:ordinal_eqType n.+2
Hv:v \in enum 'I_n.+2
Ha:a %| alpha v
x1, y1:nat
Hx1y1:alpha v = a ^ (x1.+1, y1).1 * b ^ (x1.+1, y1).2

exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & alpha v = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
v:ordinal_eqType n.+2
Hv:v \in enum 'I_n.+2
Ha:a %| alpha v
x1, y1:nat
Hx1y1:alpha v = a ^ (x1.+1, y1).1 * b ^ (x1.+1, y1).2
j1:nat
Hj1:alpha j1 = a ^ x1 * b ^ y1

exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & alpha v = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
v:ordinal_eqType n.+2
Hv:v \in enum 'I_n.+2
Ha:a %| alpha v
x1, y1:nat
Hx1y1:alpha v = a ^ (x1.+1, y1).1 * b ^ (x1.+1, y1).2
j1:nat
Hj1:alpha j1 = a ^ x1 * b ^ y1
H1j1:j1 < k.+1

exists2 x : ordinal_eqType k.+1, x \in enum 'I_k.+1 & alpha v = a * alpha x
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
v:ordinal_eqType n.+2
Hv:v \in enum 'I_n.+2
Ha:a %| alpha v
x1, y1:nat
Hx1y1:alpha v = a ^ (x1.+1, y1).1 * b ^ (x1.+1, y1).2
j1:nat
Hj1:alpha j1 = a ^ x1 * b ^ y1
j1 < k.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
v:ordinal_eqType n.+2
Hv:v \in enum 'I_n.+2
Ha:a %| alpha v
x1, y1:nat
Hx1y1:alpha v = a ^ (x1.+1, y1).1 * b ^ (x1.+1, y1).2
j1:nat
Hj1:alpha j1 = a ^ x1 * b ^ y1
H1j1:j1 < k.+1

alpha v = a * alpha (Ordinal H1j1)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
v:ordinal_eqType n.+2
Hv:v \in enum 'I_n.+2
Ha:a %| alpha v
x1, y1:nat
Hx1y1:alpha v = a ^ (x1.+1, y1).1 * b ^ (x1.+1, y1).2
j1:nat
Hj1:alpha j1 = a ^ x1 * b ^ y1
j1 < k.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
v:ordinal_eqType n.+2
Hv:v \in enum 'I_n.+2
Ha:a %| alpha v
x1, y1:nat
Hx1y1:alpha v = a ^ (x1.+1, y1).1 * b ^ (x1.+1, y1).2
j1:nat
Hj1:alpha j1 = a ^ x1 * b ^ y1

j1 < k.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
v:ordinal_eqType n.+2
Hv:v \in enum 'I_n.+2
Ha:a %| alpha v
x1, y1:nat
Hx1y1:alpha v = a ^ (x1.+1, y1).1 * b ^ (x1.+1, y1).2
j1:nat
Hj1:alpha j1 = a ^ x1 * b ^ y1

alpha k < alpha j1 -> false
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
v:ordinal_eqType n.+2
Hv:v \in enum 'I_n.+2
Ha:a %| alpha v
x1, y1:nat
Hx1y1:alpha v = a ^ (x1.+1, y1).1 * b ^ (x1.+1, y1).2
j1:nat
Hj1:alpha j1 = a ^ x1 * b ^ y1

alpha n.+1 < alpha v -> false
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
u:nat_eqType
v:ordinal_eqType n.+2
Hv:v \in enum 'I_n.+2
Ha:a %| alpha v
x1, y1:nat
Hx1y1:alpha v = a ^ (x1.+1, y1).1 * b ^ (x1.+1, y1).2
j1:nat
Hj1:alpha j1 = a ^ x1 * b ^ y1

alpha v < alpha n.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1

alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1

lb =i la2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType

u \in la2 -> u \in lb
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u \in lb -> u \in la2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
v:ordinal_eqType n.+2
Hx:v \in enum 'I_n.+2

~~ (a %| alpha v) -> alpha v \in lb
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u \in lb -> u \in la2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
v:ordinal_eqType n.+2
Hx:v \in enum 'I_n.+2

alpha v < alpha n.+2 -> ~~ (a %| alpha v) -> alpha v \in lb
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u \in lb -> u \in la2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
v:ordinal_eqType n.+2
Hx:v \in enum 'I_n.+2
u1, v1:nat

a ^ u1.+1 * b ^ v1 < alpha n.+2 -> ~~ (a %| a ^ u1.+1 * b ^ v1) -> a ^ u1.+1 * b ^ v1 \in lb
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
v:ordinal_eqType n.+2
Hx:v \in enum 'I_n.+2
v1:nat
a ^ 0 * b ^ v1 < alpha n.+2 -> ~~ (a %| a ^ 0 * b ^ v1) -> a ^ 0 * b ^ v1 \in lb
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u \in lb -> u \in la2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
v:ordinal_eqType n.+2
Hx:v \in enum 'I_n.+2
v1:nat

a ^ 0 * b ^ v1 < alpha n.+2 -> ~~ (a %| a ^ 0 * b ^ v1) -> a ^ 0 * b ^ v1 \in lb
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u \in lb -> u \in la2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
v:ordinal_eqType n.+2
Hx:v \in enum 'I_n.+2
v1:nat
H:b ^ v1 < alpha n.+2

b ^ v1 \in lb
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u \in lb -> u \in la2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
v:ordinal_eqType n.+2
Hx:v \in enum 'I_n.+2
v1:nat
H:b ^ v1 < alpha n.+2

b ^ v1 < b ^ i.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
v:ordinal_eqType n.+2
Hx:v \in enum 'I_n.+2
v1:nat
H:b ^ v1 < alpha n.+2
v1Li:v1 < i.+1
b ^ v1 \in lb
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u \in lb -> u \in la2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
v:ordinal_eqType n.+2
Hx:v \in enum 'I_n.+2
v1:nat
H:b ^ v1 < alpha n.+2

b ^ v1 <= alpha n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
v:ordinal_eqType n.+2
Hx:v \in enum 'I_n.+2
v1:nat
H:b ^ v1 < alpha n.+2
v1Li:v1 < i.+1
b ^ v1 \in lb
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u \in lb -> u \in la2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
v:ordinal_eqType n.+2
Hx:v \in enum 'I_n.+2
v1:nat
H:b ^ v1 < alpha n.+2
v1Li:v1 < i.+1

b ^ v1 \in lb
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u \in lb -> u \in la2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType

u \in lb -> u \in la2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u1:ordinal_eqType i.+1

b ^ u1 \in la2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u1:ordinal_eqType i.+1

~~ (a %| b ^ u1)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u1:ordinal_eqType i.+1
b ^ u1 \in la
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u1:ordinal_eqType i.+1

gcdn a (b ^ u1) = a -> False
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u1:ordinal_eqType i.+1
b ^ u1 \in la
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u1:ordinal_eqType i.+1

1 = a -> False
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u1:ordinal_eqType i.+1
b ^ u1 \in la
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u1:ordinal_eqType i.+1

b ^ u1 \in la
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u1:ordinal_eqType i.+1
j1:nat
Hj1:alpha j1 = b ^ u1

b ^ u1 \in la
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u1:ordinal_eqType i.+1
j1:nat
Hj1:alpha j1 = b ^ u1
j1Ln:j1 < n.+2

b ^ u1 \in la
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u1:ordinal_eqType i.+1
j1:nat
Hj1:alpha j1 = b ^ u1
j1 < n.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u1:ordinal_eqType i.+1
j1:nat
Hj1:alpha j1 = b ^ u1

j1 < n.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u1:ordinal_eqType i.+1
j1:nat
Hj1:alpha j1 = b ^ u1

alpha j1 <= alpha n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
u:nat_eqType
u1:ordinal_eqType i.+1
j1:nat
Hj1:alpha j1 = b ^ u1

alpha j1 <= b ^ i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

alpha n.+1 = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

a * alpha k = a * alpha (n - i)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

k = n - i
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

size la = size la1 + size la2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
k = size la1 + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

k = size la1 + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

uniq la1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
uniq la1 -> k = size la1 + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

uniq la
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
uniq la1 -> k = size la1 + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

injective (fun j : 'I_n.+2 => alpha j)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
uniq la1 -> k = size la1 + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
k1, k2:ordinal_eqType n.+2
H:alpha k1 = alpha k2

k1 = k2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
uniq la1 -> k = size la1 + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
k1, k2:ordinal_eqType n.+2
H:alpha k1 = alpha k2

k1 <= k2 -> k1 = k2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
uniq la1 -> k = size la1 + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

uniq la1 -> k = size la1 + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

uniq lk
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
k = size lk + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

injective (fun j : 'I_k.+1 => a * alpha j)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
k = size lk + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
k1, k2:ordinal_eqType k.+1
H:a * alpha k1 = a * alpha k2

k1 = k2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
k = size lk + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
k1, k2:ordinal_eqType k.+1
H:a * alpha k1 = a * alpha k2

alpha k2 < alpha k1 -> k1 = k2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
k1, k2:ordinal_eqType k.+1
H:a * alpha k1 = a * alpha k2
k1 <= k2 -> k1 = k2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
k = size lk + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
k1, k2:ordinal_eqType k.+1
H:a * alpha k1 = a * alpha k2

k1 <= k2 -> k1 = k2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
k = size lk + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
k1, k2:ordinal_eqType k.+1
H:a * alpha k1 = a * alpha k2

alpha k1 < alpha k2 -> k1 = k2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
k = size lk + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

k = size lk + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

k = k.+1 + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

uniq la2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
uniq la2 -> k = k.+1 + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

uniq la
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
uniq la2 -> k = k.+1 + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

injective (fun j : 'I_n.+2 => alpha j)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
uniq la2 -> k = k.+1 + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
k1, k2:ordinal_eqType n.+2
H:alpha k1 = alpha k2

k1 = k2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
uniq la2 -> k = k.+1 + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
k1, k2:ordinal_eqType n.+2
H:alpha k1 = alpha k2

k1 <= k2 -> k1 = k2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
uniq la2 -> k = k.+1 + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

uniq la2 -> k = k.+1 + size la2 - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

uniq lb
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
k = k.+1 + size lb - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

injective (fun j : 'I_i.+1 => b ^ j)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2
k = k.+1 + size lb - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

k = k.+1 + size lb - i.+2
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
beLa:b ^ i < alpha n.+1
aLbe:alpha n.+1 < b ^ i.+1
iLm:i <= n
x, y:nat
Hxy:alpha n.+1 = a ^ (x.+1, y).1 * b ^ (x.+1, y).2
k:nat
Hk:alpha k = a ^ x * b ^ y
la:=[seq alpha (j : 'I_n.+2) | j <- enum 'I_n.+2]:seq nat
lb:=[seq b ^ (j : 'I_i.+1) | j <- enum 'I_i.+1]:seq nat
lc:=[seq a * alpha (j : 'I_(n - i)) | j <- enum 'I_(n - i)]:seq nat
Ula:uniq la
Sla:size la = n.+2
la1:=[seq x <- la | a %| x]:seq nat
la2:=[seq x <- la | ~~ (a %| x)]:seq nat
lk:=[seq a * alpha (j : 'I_k.+1) | j <- enum 'I_k.+1]:seq nat
Slk:size lk = k.+1
lkEla1:lk =i la1
lbEla2:lb =i la2

k = k.+1 + i.+1 - i.+2
by rewrite subSS addnK. Qed.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat

b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat

b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
i:nat

b ^ i <= alpha 0 < b ^ i.+1 -> \sum_(i0 < 1) alpha i0 = a * (\sum_(i0 < 0 - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
b ^ i <= alpha n.+1 < b ^ i.+1 -> \sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b

\sum_(i0 < 1) alpha i0 = a * (\sum_(i0 < 0 - 0) alpha i0) + \sum_(i0 < 1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
b ^ i <= alpha n.+1 < b ^ i.+1 -> \sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat

b ^ i <= alpha n.+1 < b ^ i.+1 -> \sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i = alpha n.+1
Hb:alpha n.+1 < b ^ i.+1

\sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i < alpha n.+1
Hb:alpha n.+1 < b ^ i.+1
\sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
H:b ^ 0 = alpha n.+1

alpha n.+1 < b ^ 1 -> \sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - 0) alpha i0) + \sum_(i0 < 1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i.+1 = alpha n.+1
Hb:alpha n.+1 < b ^ i.+2
\sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - i.+1) alpha i0) + \sum_(i0 < i.+2) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i < alpha n.+1
Hb:alpha n.+1 < b ^ i.+1
\sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
H:b ^ 0 = alpha n.+1

alpha 0 < alpha n.+1 -> alpha n.+1 < b ^ 1 -> \sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - 0) alpha i0) + \sum_(i0 < 1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i.+1 = alpha n.+1
Hb:alpha n.+1 < b ^ i.+2
\sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - i.+1) alpha i0) + \sum_(i0 < i.+2) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i < alpha n.+1
Hb:alpha n.+1 < b ^ i.+1
\sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i.+1 = alpha n.+1
Hb:alpha n.+1 < b ^ i.+2

\sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - i.+1) alpha i0) + \sum_(i0 < i.+2) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i < alpha n.+1
Hb:alpha n.+1 < b ^ i.+1
\sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i.+1 = alpha n.+1
Hb:alpha n.+1 < b ^ i.+2

\sum_(i < n.+1) alpha i + alpha n.+1 = a * (\sum_(i0 < n.+1 - i.+1) alpha i0) + (\sum_(i0 < i.+1) b ^ i0 + alpha n.+1)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i < alpha n.+1
Hb:alpha n.+1 < b ^ i.+1
\sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i.+1 = alpha n.+1
Hb:alpha n.+1 < b ^ i.+2

\sum_(i < n.+1) alpha i = a * (\sum_(i0 < n.+1 - i.+1) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i < alpha n.+1
Hb:alpha n.+1 < b ^ i.+1
\sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i.+1 = alpha n.+1
Hb:alpha n.+1 < b ^ i.+2

\sum_(i < n.+1) alpha i = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i < alpha n.+1
Hb:alpha n.+1 < b ^ i.+1
\sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
Ha:b ^ i.+1 = alpha n.+1
Hb:alpha n.+1 < b ^ i.+2

b ^ i <= alpha n < b ^ i.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i < alpha n.+1
Hb:alpha n.+1 < b ^ i.+1
\sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
Ha:b ^ i.+1 = alpha n.+1
Hb:alpha n.+1 < b ^ i.+2

b ^ i <= alpha n
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i < alpha n.+1
Hb:alpha n.+1 < b ^ i.+1
\sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
Ha:b ^ i.+1 = alpha n.+1
Hb:alpha n.+1 < b ^ i.+2

b ^ i < alpha n.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i < alpha n.+1
Hb:alpha n.+1 < b ^ i.+1
\sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i < alpha n.+1
Hb:alpha n.+1 < b ^ i.+1

\sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < n.+1 - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i < alpha n.+1
Hb:alpha n.+1 < b ^ i.+1

\sum_(i0 < n.+2) alpha i0 = a * (\sum_(i0 < (n - i).+1) alpha i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i < alpha n.+1
Hb:alpha n.+1 < b ^ i.+1

addn_monoid (\big[addn_monoid/0]_(i < n.+1) alpha (widen_ord (leqnSn n.+1) i)) (alpha ord_max) = a * addn_monoid (\big[addn_monoid/0]_(i0 < n - i) alpha (widen_ord (leqnSn (n - i)) i0)) (alpha ord_max) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i < alpha n.+1
Hb:alpha n.+1 < b ^ i.+1

addn_monoid (\big[addn_monoid/0]_(i < n.+1) alpha (widen_ord (leqnSn n.+1) i)) (alpha ord_max) = a * \big[addn_monoid/0]_(i0 < n - i) alpha (widen_ord (leqnSn (n - i)) i0) + \sum_(i0 < i.+1) b ^ i0 + a * alpha ord_max
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i < alpha n.+1
Hb:alpha n.+1 < b ^ i.+1

alpha ord_max = a * alpha ord_max
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i < alpha n.+1
Hb:alpha n.+1 < b ^ i.+1
\big[addn_monoid/0]_(i < n.+1) alpha (widen_ord (leqnSn n.+1) i) = a * \big[addn_monoid/0]_(i0 < n - i) alpha (widen_ord (leqnSn (n - i)) i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n:nat
IH:forall i : nat, b ^ i <= alpha n < b ^ i.+1 -> \sum_(i0 < n.+1) alpha i0 = a * (\sum_(i0 < n - i) alpha i0) + \sum_(i0 < i.+1) b ^ i0
i:nat
Ha:b ^ i < alpha n.+1
Hb:alpha n.+1 < b ^ i.+1

\big[addn_monoid/0]_(i < n.+1) alpha (widen_ord (leqnSn n.+1) i) = a * \big[addn_monoid/0]_(i0 < n - i) alpha (widen_ord (leqnSn (n - i)) i0) + \sum_(i0 < i.+1) b ^ i0
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
Ha:b ^ i < alpha n.+1
Hb:alpha n.+1 < b ^ i.+1

b ^ i <= alpha n < b ^ i.+1
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
Ha:b ^ i < alpha n.+1
Hb:alpha n.+1 < b ^ i.+1

true && (alpha n < b ^ i.+1)
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
bL1:1 < b
n, i:nat
Ha:b ^ i < alpha n.+1

alpha n < (alpha n.+1).+1
by rewrite ltnS ltnW // alpha_ltn. Qed. End Main. Section S23. Notation α := (alpha 2 3). (* First 60 element of the list *)
= [:: 1; 2; 3; 4; 6; 8; 9; 12; 16; 18; 24; 27; 32; 36; 48; 54; 64; 72; 81; 96; 108; 128; 144; 162; 192; 216; 243; 256; 288; 324; 384; 432; 486; 512; 576; 648; 729; 768; 864; 972; 1024; 1152; 1296; 1458; 1536; 1728; 1944; 2048; 2187; 2304; 2592; 2916; 3072; 3456; 3888; 4096; 4374; 4608; 5184; 5832] : seq nat
Definition dsum_alpha n := \sum_(i < n) α i. Notation S1 := dsum_alpha.

S1 0 = 0

S1 0 = 0
by rewrite /S1 big_ord0 // => [] []. Qed.

S1 1 = 1

S1 1 = 1
by rewrite /S1 big_ord_recr /= big_ord0. Qed.
n:nat

~~ odd n -> (n./2).*2 = n
n:nat

~~ odd n -> (n./2).*2 = n
by move=> nO; rewrite -{2}(odd_double_half n) (negPf nO). Qed.
n, i:nat

i <= n -> S1 n <= (S1 (n - i)).*2 + ((3 ^ i).-1)./2
n, i:nat

i <= n -> S1 n <= (S1 (n - i)).*2 + ((3 ^ i).-1)./2
n, i:nat
iLn:i <= n

S1 n <= (S1 (n - i)).*2 + ((3 ^ i).-1)./2
n, i:nat
iLn:i <= n

~~ odd (3 ^ i).-1
n, i:nat
iLn:i <= n
(S1 n).*2 <= ((S1 (n - i)).*2).*2 + (3 ^ i).-1
n, i:nat
iLn:i <= n

(S1 n).*2 <= ((S1 (n - i)).*2).*2 + (3 ^ i).-1
n, i:nat
iLn:i <= n

2 * S1 n <= 2 * (2 * S1 (n - i)) + 3.-1 * (\sum_(i0 < i) 3 ^ i0)
n, i:nat
iLn:i <= n

S1 n <= 2 * S1 (n - i) + \sum_(i0 < i) 3 ^ i0
by apply: sum_alpha_leq. Qed.
n:nat

exists i : nat, n < 3 ^ i
n:nat

exists i : nat, n < 3 ^ i
by exists n; apply: ltn_expl. Qed. Definition log3 k := (ex_minn (log3_proof k)).-1.

log3 0 = 0

log3 0 = 0
by rewrite /log3; case: ex_minnP => [] [|m] //= _ /(_ 0 isT); case: m. Qed.

log3 1 = 0

log3 1 = 0
by rewrite /log3; case: ex_minnP => [] [|m] //= _ /(_ 1 isT); case: m. Qed.
n:nat

n < 3 ^ (log3 n).+1
n:nat

n < 3 ^ (log3 n).+1
n:nat
nLm:n < 3 ^ 0
H:forall n0 : nat, n < 3 ^ n0 -> 0 <= n0

n < 3 ^ 1
by apply: leq_trans nLm _. Qed.
n:nat

0 < n -> 3 ^ log3 n <= n
n:nat

0 < n -> 3 ^ log3 n <= n
n, m:nat
nLm:n < 3 ^ m.+1
H:forall n0 : nat, n < 3 ^ n0 -> m < n0
nL:0 < n

3 ^ m <= n
by rewrite leqNgt; apply/negP => /H; rewrite ltnn. Qed.
n:nat

log3 (α n) < n.+1
n:nat

log3 (α n) < n.+1
n:nat

3 ^ log3 (α n) < 3 ^ n.+1
n:nat

α n < 3 ^ n.+1
by apply: alpha_exp_bound. Qed.
n:nat

0 < n -> S1 n = (S1 (n - (log3 (α n.-1)).+1)).*2 + ((3 ^ (log3 (α n.-1)).+1).-1)./2
n:nat

0 < n -> S1 n = (S1 (n - (log3 (α n.-1)).+1)).*2 + ((3 ^ (log3 (α n.-1)).+1).-1)./2
n:nat

S1 n.+1 = (S1 (n.+1 - (log3 (α n.+1.-1)).+1)).*2 + ((3 ^ (log3 (α n.+1.-1)).+1).-1)./2
n:nat

(S1 n.+1).*2 = ((S1 (n.+1 - (log3 (α n.+1.-1)).+1)).*2 + ((3 ^ (log3 (α n.+1.-1)).+1).-1)./2).*2
n:nat

~~ odd (3 ^ (log3 (α n.+1.-1)).+1).-1
n:nat
(S1 n.+1).*2 = ((S1 (n.+1 - (log3 (α n.+1.-1)).+1)).*2).*2 + (3 ^ (log3 (α n.+1.-1)).+1).-1
n:nat

(S1 n.+1).*2 = ((S1 (n.+1 - (log3 (α n.+1.-1)).+1)).*2).*2 + (3 ^ (log3 (α n.+1.-1)).+1).-1
n:nat

S1 n.+1 = 2 * S1 (n.+1 - (log3 (α n.+1.-1)).+1) + \sum_(i < (log3 (α n.+1.-1)).+1) 3 ^ i
n:nat

3 ^ log3 (α n) <= α n < 3 ^ (log3 (α n)).+1
n:nat
iLn:3 ^ log3 (α n) <= α n < 3 ^ (log3 (α n)).+1
S1 n.+1 = 2 * S1 (n.+1 - (log3 (α n.+1.-1)).+1) + \sum_(i < (log3 (α n.+1.-1)).+1) 3 ^ i
n:nat

0 < α n
n:nat
iLn:3 ^ log3 (α n) <= α n < 3 ^ (log3 (α n)).+1
S1 n.+1 = 2 * S1 (n.+1 - (log3 (α n.+1.-1)).+1) + \sum_(i < (log3 (α n.+1.-1)).+1) 3 ^ i
n:nat
iLn:3 ^ log3 (α n) <= α n < 3 ^ (log3 (α n)).+1

S1 n.+1 = 2 * S1 (n.+1 - (log3 (α n.+1.-1)).+1) + \sum_(i < (log3 (α n.+1.-1)).+1) 3 ^ i
by apply: sum_alpha_eq. Qed.
n:nat

S1 n.+1 = \min_(i <= n) ((S1 i).*2 + ((3 ^ (n.+1 - i)).-1)./2)
n:nat

S1 n.+1 = \min_(i <= n) ((S1 i).*2 + ((3 ^ (n.+1 - i)).-1)./2)
n:nat

\min_(i <= n) ((S1 i).*2 + ((3 ^ (n.+1 - i)).-1)./2) <= S1 n.+1
n:nat
S1 n.+1 <= \min_(i <= n) ((S1 i).*2 + ((3 ^ (n.+1 - i)).-1)./2)
n:nat

\min_(i <= n) ((S1 i).*2 + ((3 ^ (n.+1 - i)).-1)./2) <= (S1 (n.+1 - (log3 (α n.+1.-1)).+1)).*2 + ((3 ^ (n.+1 - (n.+1 - (log3 (α n)).+1))).-1)./2
n:nat
S1 n.+1 <= \min_(i <= n) ((S1 i).*2 + ((3 ^ (n.+1 - i)).-1)./2)
n:nat

n.+1 - (log3 (α n.+1.-1)).+1 <= n
n:nat
S1 n.+1 <= \min_(i <= n) ((S1 i).*2 + ((3 ^ (n.+1 - i)).-1)./2)
n:nat

S1 n.+1 <= \min_(i <= n) ((S1 i).*2 + ((3 ^ (n.+1 - i)).-1)./2)
n, i:nat
iLn:i <= n

S1 n.+1 <= (S1 i).*2 + ((3 ^ (n.+1 - i)).-1)./2
n, i:nat
iLn:i <= n

S1 n.+1 <= (S1 (n.+1 - (n.+1 - i))).*2 + ((3 ^ (n.+1 - i)).-1)./2
by apply/S1_leq/leq_subr. Qed.
n:nat

delta S1 n = α n
n:nat

delta S1 n = α n
by rewrite /S1 /delta big_ord_recr /= addnC addnK. Qed. Definition dsum_alphaL l := conv (fun i => (S1 i).*2) (fun i => l * (3 ^ i).-1./2). Notation " 'S_[' l ']' " := (dsum_alphaL l) (format "S_[ l ]"). Definition alphaL l n := delta S_[l] n. Notation " 'α_[' l ']' " := (alphaL l) (format "α_[ l ]").
f, g:nat -> nat
n:nat

(forall i : nat, i <= n -> f i <= g i) -> \min_(i <= n) f i <= \min_(i <= n) g i
f, g:nat -> nat
n:nat

(forall i : nat, i <= n -> f i <= g i) -> \min_(i <= n) f i <= \min_(i <= n) g i
f, g:nat -> nat
n:nat
IH:(forall i : nat, i <= n -> f i <= g i) -> \min_(i <= n) f i <= \min_(i <= n) g i
H:forall i : nat, i <= n.+1 -> f i <= g i

minn (f n.+1) (\min_(i <= n) f i) <= minn (g n.+1) (\min_(i <= n) g i)
f, g:nat -> nat
n:nat
IH:(forall i : nat, i <= n -> f i <= g i) -> \min_(i <= n) f i <= \min_(i <= n) g i
H:forall i : nat, i <= n.+1 -> f i <= g i
i:nat
iLn:i <= n

f i <= g i
by rewrite H // (leq_trans iLn). Qed.
n:nat

increasing (dsum_alphaL^~ n)
n:nat

increasing (dsum_alphaL^~ n)
n, l:nat

\min_(i <= n) ((S1 i).*2 + l * ((3 ^ (n - i)).-1)./2) <= \min_(i <= n) ((S1 i).*2 + l.+1 * ((3 ^ (n - i)).-1)./2)
n, l, i:nat

(S1 i).*2 + l * ((3 ^ (n - i)).-1)./2 <= (S1 i).*2 + l.+1 * ((3 ^ (n - i)).-1)./2
by rewrite leq_add2l leq_mul2r leqnSn orbT. Qed.
n:nat

concave (dsum_alphaL^~ n)
n:nat

concave (dsum_alphaL^~ n)
n, i:nat

S_[i] n + S_[i.+2] n <= (S_[i.+1] n).*2
n, i:nat

S_[i] n + S_[i.+2] n <= (\min_(i0 <= n) ((S1 i0).*2 + i.+1 * ((3 ^ (n - i0)).-1)./2)).*2
n, i:nat
f:=fun i x : nat => (S1 x).*2 + i * ((3 ^ (n - x)).-1)./2:nat -> nat -> nat

S_[i] n + S_[i.+2] n <= (\min_(i0 <= n) ((S1 i0).*2 + i.+1 * ((3 ^ (n - i0)).-1)./2)).*2
n, i:nat
f:=fun i x : nat => (S1 x).*2 + i * ((3 ^ (n - x)).-1)./2:nat -> nat -> nat
j:'I_n.+1

S_[i] n + S_[i.+2] n <= (f i.+1 j).*2
n, i:nat
f:=fun i x : nat => (S1 x).*2 + i * ((3 ^ (n - x)).-1)./2:nat -> nat -> nat
j:'I_n.+1

(f i.+1 j).*2 = f i j + f i.+2 j
n, i:nat
f:=fun i x : nat => (S1 x).*2 + i * ((3 ^ (n - x)).-1)./2:nat -> nat -> nat
j:'I_n.+1
S_[i] n + S_[i.+2] n <= f i j + f i.+2 j
n, i:nat
f:=fun i x : nat => (S1 x).*2 + i * ((3 ^ (n - x)).-1)./2:nat -> nat -> nat
j:'I_n.+1
x:=(S1 j).*2:nat
y:=((3 ^ (n - j)).-1)./2:nat

(x + i.+1 * y).*2 = x + i * y + (x + i.+2 * y)
n, i:nat
f:=fun i x : nat => (S1 x).*2 + i * ((3 ^ (n - x)).-1)./2:nat -> nat -> nat
j:'I_n.+1
S_[i] n + S_[i.+2] n <= f i j + f i.+2 j
n, i:nat
f:=fun i x : nat => (S1 x).*2 + i * ((3 ^ (n - x)).-1)./2:nat -> nat -> nat
j:'I_n.+1
x:=(S1 j).*2:nat
y:=((3 ^ (n - j)).-1)./2:nat

(x + i.+1 * y).*2 = x.*2 + (i + i.+2) * y
n, i:nat
f:=fun i x : nat => (S1 x).*2 + i * ((3 ^ (n - x)).-1)./2:nat -> nat -> nat
j:'I_n.+1
S_[i] n + S_[i.+2] n <= f i j + f i.+2 j
n, i:nat
f:=fun i x : nat => (S1 x).*2 + i * ((3 ^ (n - x)).-1)./2:nat -> nat -> nat
j:'I_n.+1

S_[i] n + S_[i.+2] n <= f i j + f i.+2 j
n, i:nat
f:=fun i x : nat => (S1 x).*2 + i * ((3 ^ (n - x)).-1)./2:nat -> nat -> nat
j:'I_n.+1

S_[i] n <= f i j
n, i:nat
f:=fun i x : nat => (S1 x).*2 + i * ((3 ^ (n - x)).-1)./2:nat -> nat -> nat
j:'I_n.+1
S_[i.+2] n <= f i.+2 j
n, i:nat
f:=fun i x : nat => (S1 x).*2 + i * ((3 ^ (n - x)).-1)./2:nat -> nat -> nat
j:'I_n.+1

S_[i.+2] n <= f i.+2 j
by apply: bigmin_inf (leqnn _); rewrite -ltnS. Qed.
l, n:nat

(S1 n).*2 <= l -> S_[l] n = (S1 n).*2
l, n:nat

(S1 n).*2 <= l -> S_[l] n = (S1 n).*2
l, n:nat
S1Ll:(S1 n).*2 <= l

S_[l] n == (S1 n).*2
l, n:nat
S1Ll:(S1 n).*2 <= l

\min_(i <= n) ((S1 i).*2 + l * ((3 ^ (n - i)).-1)./2) <= (S1 n).*2
l, n:nat
S1Ll:(S1 n).*2 <= l
(S1 n).*2 <= \min_(i <= n) ((S1 i).*2 + l * ((3 ^ (n - i)).-1)./2)
l, n:nat
S1Ll:(S1 n).*2 <= l

(S1 n).*2 + l * ((3 ^ (n - n)).-1)./2 <= (S1 n).*2
l, n:nat
S1Ll:(S1 n).*2 <= l
(S1 n).*2 <= \min_(i <= n) ((S1 i).*2 + l * ((3 ^ (n - i)).-1)./2)
l, n:nat
S1Ll:(S1 n).*2 <= l

(S1 n).*2 <= \min_(i <= n) ((S1 i).*2 + l * ((3 ^ (n - i)).-1)./2)
l, n:nat
S1Ll:(S1 n).*2 <= l
i:nat

i <= n -> (S1 n).*2 <= (S1 i).*2 + l * ((3 ^ (n - i)).-1)./2
l, n:nat
S1Ll:(S1 n).*2 <= l
i:nat
iLn:i < n

(S1 n).*2 <= (S1 i).*2 + l * ((3 ^ (n - i)).-1)./2
l, n, i:nat
iLn:i < n

l <= (S1 i).*2 + l * ((3 ^ (n - i)).-1)./2
l, n, i:nat
iLn:i < n

l <= l * ((3 ^ (n - i)).-1)./2
l, n, i:nat
iLn:i < n

1 < (3 ^ (n - i)).-1
by rewrite -ltnS prednK ?expn_gt0 // (@leq_exp2l _ 1) // subn_gt0. Qed.
i:nat

delta (fun i : nat => (S1 i).*2) i = (α i).*2
i:nat

delta (fun i : nat => (S1 i).*2) i = (α i).*2
by rewrite /delta -doubleB [_ - _]delta_S1. Qed.

convex (fun i : nat => (S1 i).*2)

convex (fun i : nat => (S1 i).*2)
i:nat

(S1 i).*2 <= (S1 i.+1).*2
i:nat
delta (fun i : nat => (S1 i).*2) i <= delta (fun i : nat => (S1 i).*2) i.+1
i:nat

delta (fun i : nat => (S1 i).*2) i <= delta (fun i : nat => (S1 i).*2) i.+1
by rewrite !delta_2S1 leq_double; apply/ltnW/alpha_ltn. Qed.
l, i:nat

delta (fun i : nat => l * ((3 ^ i).-1)./2) i = l * 3 ^ i
l, i:nat

delta (fun i : nat => l * ((3 ^ i).-1)./2) i = l * 3 ^ i
l, i:nat

l * ((3 ^ i.+1).-1 - (3 ^ i).-1)./2 = l * 3 ^ i
l, i:nat

l * (3 ^ i.+1 - 3 ^ i)./2 = l * 3 ^ i
by rewrite expnS -[X in _ * ((_ - X))./2]mul1n -mulnBl mul2n doubleK. Qed.
l:nat

convex (fun i : nat => l * ((3 ^ i).-1)./2)
l:nat

convex (fun i : nat => l * ((3 ^ i).-1)./2)
l, i:nat

l * ((3 ^ i).-1)./2 <= l * ((3 ^ i.+1).-1)./2
l, i:nat
delta (fun i : nat => l * ((3 ^ i).-1)./2) i <= delta (fun i : nat => l * ((3 ^ i).-1)./2) i.+1
l, i:nat

(3 ^ i).-1 <= (3 ^ i.+1).-1
l, i:nat
delta (fun i : nat => l * ((3 ^ i).-1)./2) i <= delta (fun i : nat => l * ((3 ^ i).-1)./2) i.+1
l, i:nat

delta (fun i : nat => l * ((3 ^ i).-1)./2) i <= delta (fun i : nat => l * ((3 ^ i).-1)./2) i.+1
by rewrite !delta_3l leq_mul2l leq_exp2l // leqnSn orbT. Qed.
l:nat

convex S_[l]
l:nat

convex S_[l]
l:nat

convex (fun i : nat => l * ((3 ^ i).-1)./2)
by apply: convex_3l. Qed.
l, n:nat

α_[l] n = fmerge (fun i : nat => (α i).*2) (fun i : nat => l * 3 ^ i) n
l, n:nat

α_[l] n = fmerge (fun i : nat => (α i).*2) (fun i : nat => l * 3 ^ i) n
l, n:nat

fmerge (delta (fun i : nat => (S1 i).*2)) (delta (fun i : nat => l * ((3 ^ i).-1)./2)) n = fmerge (fun i : nat => (α i).*2) (fun i : nat => l * 3 ^ i) n
l, n:nat
convex (fun i : nat => (S1 i).*2)
l, n, i:nat

delta (fun i : nat => l * ((3 ^ i).-1)./2) i = l * 3 ^ i
l, n:nat
convex (fun i : nat => (S1 i).*2)
l, n:nat

convex (fun i : nat => (S1 i).*2)
by apply: convex_2S1. Qed.
l:nat

increasing α_[l]
l:nat

increasing α_[l]
l:nat

increasing (fmerge (fun i : nat => (α i).*2) (fun i : nat => l * 3 ^ i))
l:nat

increasing (fun i : nat => (α i).*2)
l:nat
increasing (fun i : nat => l * 3 ^ i)
l:nat

increasing (fun i : nat => l * 3 ^ i)
by move=> n; rewrite leq_mul2l leq_exp2l ?leqnSn ?orbT. Qed.
n:nat

increasing (alphaL^~ n)
n:nat

increasing (alphaL^~ n)
n, l:nat

increasing (fun i : nat => (α i).*2)
n, l:nat
increasing (fun i : nat => l.+1 * 3 ^ i)
n, l:nat
increasing (fun i : nat => (α i).*2)
n, l:nat
increasing (fun i : nat => l * 3 ^ i)
n, l:nat
\max_(i < n.+1) minn (α i).*2 (l * 3 ^ (n - i)) <= \max_(i < n.+1) minn (α i).*2 (l.+1 * 3 ^ (n - i))
n, l:nat

increasing (fun i : nat => (α i).*2)
n, l:nat
increasing (fun i : nat => l.+1 * 3 ^ i)
n, l:nat
increasing (fun i : nat => (α i).*2)
n, l:nat
increasing (fun i : nat => l * 3 ^ i)
n, l:nat
\max_(i < n.+1) minn (α i).*2 (l * 3 ^ (n - i)) <= \max_(i < n.+1) minn (α i).*2 (l.+1 * 3 ^ (n - i))
n, l:nat

increasing (fun i : nat => l.+1 * 3 ^ i)
n, l:nat
increasing (fun i : nat => (α i).*2)
n, l:nat
increasing (fun i : nat => l * 3 ^ i)
n, l:nat
\max_(i < n.+1) minn (α i).*2 (l * 3 ^ (n - i)) <= \max_(i < n.+1) minn (α i).*2 (l.+1 * 3 ^ (n - i))
n, l:nat

increasing (fun i : nat => l.+1 * 3 ^ i)
n, l:nat
increasing (fun i : nat => (α i).*2)
n, l:nat
increasing (fun i : nat => l * 3 ^ i)
n, l:nat
\max_(i < n.+1) minn (α i).*2 (l * 3 ^ (n - i)) <= \max_(i < n.+1) minn (α i).*2 (l.+1 * 3 ^ (n - i))
n, l:nat

increasing (fun i : nat => (α i).*2)
n, l:nat
increasing (fun i : nat => l * 3 ^ i)
n, l:nat
\max_(i < n.+1) minn (α i).*2 (l * 3 ^ (n - i)) <= \max_(i < n.+1) minn (α i).*2 (l.+1 * 3 ^ (n - i))
n, l:nat

increasing (fun i : nat => (α i).*2)
n, l:nat
increasing (fun i : nat => l * 3 ^ i)
n, l:nat
\max_(i < n.+1) minn (α i).*2 (l * 3 ^ (n - i)) <= \max_(i < n.+1) minn (α i).*2 (l.+1 * 3 ^ (n - i))
n, l:nat

increasing (fun i : nat => l * 3 ^ i)
n, l:nat
\max_(i < n.+1) minn (α i).*2 (l * 3 ^ (n - i)) <= \max_(i < n.+1) minn (α i).*2 (l.+1 * 3 ^ (n - i))
n, l:nat

increasing (fun i : nat => l * 3 ^ i)
n, l:nat
\max_(i < n.+1) minn (α i).*2 (l * 3 ^ (n - i)) <= \max_(i < n.+1) minn (α i).*2 (l.+1 * 3 ^ (n - i))
n, l:nat

\max_(i < n.+1) minn (α i).*2 (l * 3 ^ (n - i)) <= \max_(i < n.+1) minn (α i).*2 (l.+1 * 3 ^ (n - i))
n, l:nat
i:ordinal_finType n.+1

minn (α i).*2 (l * 3 ^ (n - i)) <= \max_(i < n.+1) minn (α i).*2 (l.+1 * 3 ^ (n - i))
n, l:nat
i:ordinal_finType n.+1

minn (α i).*2 (l * 3 ^ (n - i)) <= minn (α i).*2 (l.+1 * 3 ^ (n - i))
n, l:nat
i:ordinal_finType n.+1
minn (α i).*2 (l.+1 * 3 ^ (n - i)) <= \max_(i < n.+1) minn (α i).*2 (l.+1 * 3 ^ (n - i))
n, l:nat
i:ordinal_finType n.+1

minn (α i).*2 (l.+1 * 3 ^ (n - i)) <= \max_(i < n.+1) minn (α i).*2 (l.+1 * 3 ^ (n - i))
by apply: leq_bigmax. Qed.
l, n:nat

S_[l] n.+1 + S_[l.+1] n <= S_[l] n + S_[l.+1] n.+1
l, n:nat

S_[l] n.+1 + S_[l.+1] n <= S_[l] n + S_[l.+1] n.+1
l, n:nat

S_[l] n <= S_[l] n.+1
l, n:nat
S_[l] n.+1 - S_[l] n + S_[l.+1] n <= S_[l.+1] n.+1
l, n:nat

S_[l] n.+1 - S_[l] n + S_[l.+1] n <= S_[l.+1] n.+1
l, n:nat

S_[l.+1] n <= S_[l.+1] n.+1
l, n:nat
α_[l] n <= S_[l.+1] n.+1 - S_[l.+1] n
l, n:nat

α_[l] n <= S_[l.+1] n.+1 - S_[l.+1] n
l, n:nat

α_[l] n <= α_[l.+1] n
by apply: increasing_alphaL_l. Qed.
l:nat

α_[l] 0 = minn 2 l
l:nat

α_[l] 0 = minn 2 l
l:nat

minn (1.*2 + l * 0) (0.*2 + l * 1) - (0.*2 + l * 0) = minn 2 l
by rewrite muln0 addn0 add0n subn0 muln1. Qed.
n:nat

S_[0] n = 0
n:nat

S_[0] n = 0
n:nat

\min_(i <= n) ((S1 i).*2 + 0 * ((3 ^ (n - i)).-1)./2) = 0
n:nat

minn ((S1 n.+1).*2 + 0 * ((3 ^ (n.+1 - n.+1)).-1)./2) 0 = 0
by rewrite minn0. Qed.

S_[1] =1 S1

S_[1] =1 S1

S_[1] 0 = S1 0
i:nat
S_[1] i.+1 = S1 i.+1
i:nat

S_[1] i.+1 = S1 i.+1
i:nat

minn (S1 i.+1).*2 (\min_(i0 <= i) ((S1 i0).*2 + 1 * ((3 ^ (i.+1 - i0)).-1)./2)) = S1 i.+1
i:nat

minn (S1 i.+1).*2 (S1 i.+1) = S1 i.+1
i:nat
\min_(x <= i) ((S1 x).*2 + 1 * ((3 ^ (i.+1 - x)).-1)./2) = S1 i.+1
i:nat

\min_(x <= i) ((S1 x).*2 + 1 * ((3 ^ (i.+1 - x)).-1)./2) = S1 i.+1
by rewrite S1_bigmin; apply: bigmin_ext => i1 i1H; rewrite mul1n. Qed.
l, n:nat

S_[l] n <= (S_[1] n).*2
l, n:nat

S_[l] n <= (S_[1] n).*2
l, n:nat

S_[l] n <= (S1 n).*2
l, n:nat
lLS:l < (S1 n).*2

S_[l] n <= (S1 n).*2
l, n:nat
lLS:l < (S1 n).*2

S_[l] n <= S_[(S1 n).*2] n
l, n:nat
lLS:l < (S1 n).*2
H:forall n0 n1 : nat, n0 <= n1 -> S_[n0] n <= S_[n1] n

S_[l] n <= S_[(S1 n).*2] n
by apply/H/ltnW. Qed.
k:nat

α_[1] k = α k
k:nat

α_[1] k = α k
by rewrite /alphaL /delta !S1E -delta_S1. Qed.
l, n:nat

α_[l] n <= (α_[1] n).*2
l, n:nat

α_[l] n <= (α_[1] n).*2
l, n:nat

α_[l] n <= (α n).*2
l, n:nat
SLl:(S1 n.+1).*2 <= l

α_[l] n <= (α n).*2
l, n:nat
lLS:l < (S1 n.+1).*2
α_[l] n <= (α n).*2
l, n:nat
SLl:(S1 n.+1).*2 <= l

(S1 n.+1).*2 - (S1 n).*2 <= (α n).*2
l, n:nat
SLl:(S1 n.+1).*2 <= l
(S1 n).*2 <= l
l, n:nat
lLS:l < (S1 n.+1).*2
α_[l] n <= (α n).*2
l, n:nat
SLl:(S1 n.+1).*2 <= l

(S1 n).*2 <= l
l, n:nat
lLS:l < (S1 n.+1).*2
α_[l] n <= (α n).*2
l, n:nat
lLS:l < (S1 n.+1).*2

α_[l] n <= (α n).*2
l, n:nat
lLS:l < (S1 n.+1).*2

α_[l] n <= (S1 n.+1).*2 - (S1 n).*2
l, n:nat
lLS:l < (S1 n.+1).*2

α_[l] n <= S_[(S1 n.+1).*2] n.+1 - (S1 n).*2
l, n:nat
lLS:l < (S1 n.+1).*2

α_[l] n <= S_[(S1 n.+1).*2] n.+1 - S_[(S1 n.+1).*2] n
l, n:nat
lLS:l < (S1 n.+1).*2
(S1 n).*2 <= (S1 n.+1).*2
l, n:nat
lLS:l < (S1 n.+1).*2

α_[l] n <= α_[(S1 n.+1).*2] n
l, n:nat
lLS:l < (S1 n.+1).*2
(S1 n).*2 <= (S1 n.+1).*2
l, n:nat
lLS:l < (S1 n.+1).*2

(S1 n).*2 <= (S1 n.+1).*2
by case: convex_2S1. Qed.
m, n:nat

iota m n.+1 = m :: iota m.+1 n
m, n:nat

iota m n.+1 = m :: iota m.+1 n
by []. Qed.
T:Type
a:pred T
b:T
l:seq T

count a (b :: l) = a b + count a l
T:Type
a:pred T
b:T
l:seq T

count a (b :: l) = a b + count a l
by []. Qed.

increasing α

increasing α
by move=> n; apply/ltnW/alpha_mono. Qed. (* THis is 3.3 *)
m, k:nat

α m + minn (3 ^ k) (α m) <= α (m + k.+1)
m, k:nat

α m + minn (3 ^ k) (α m) <= α (m + k.+1)
m, k:nat

α m + minn (3 ^ k) (α m) <= (α m).*2
m, k:nat
amkLam:α (m + k.+1) < (α m).*2
α m + minn (3 ^ k) (α m) <= α (m + k.+1)
m, k:nat
amkLam:α (m + k.+1) < (α m).*2

α m + minn (3 ^ k) (α m) <= α (m + k.+1)
m, k:nat
amkLam:α (m + k.+1) < (α m).*2

α m + 3 ^ k <= α (m + k.+1)
k, n:nat

α (n + k.+1) < (α n).*2 -> 3 ^ k + α n <= α (n + k.+1)
k, n:nat
m:=n + k.+1:nat

α m < (α n).*2 -> 3 ^ k + α n <= α m
k, n:nat
m:=n + k.+1:nat

k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
k, n, m:nat

k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat

0 + n < m -> α m < (α n).*2 -> 3 ^ 0 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
i:nat_eqType

i \in l -> exists j : nat, i = 3 * α j
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
i, j:nat_eqType
ajD3:3 %| α j

exists j0 : nat, α j = 3 * α j0
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
i, j:nat_eqType
ajD3:3 %| α j
i1:nat
ajE:α j = 2 ^ i1 * 3 ^ 0

exists j0 : nat, α j = 3 * α j0
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
i, j:nat_eqType
ajD3:3 %| α j
i1, j1:nat
ajE:α j = 2 ^ i1 * 3 ^ j1.+1
exists j0 : nat, α j = 3 * α j0
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
i, j:nat_eqType
ajD3:3 %| α j
i1, j1:nat
ajE:α j = 2 ^ i1 * 3 ^ j1.+1

exists j0 : nat, α j = 3 * α j0
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
i, j:nat_eqType
ajD3:3 %| α j
i1, j1:nat
ajE:α j = 2 ^ i1 * 3 ^ j1.+1
k1:nat
ak1E:α k1 = 2 ^ i1 * 3 ^ j1

exists j0 : nat, α j = 3 * α j0
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m

k.+2 < size (iota n (m - n).+1)
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)

k.+1 < size l
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)

k.+2 < 1 + count (fun i : nat => 3 %| α i) (iota n (m - n).+1)
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < count (fun i : nat => 3 %| α i) (iota n (m - n).+1) + count (predC (fun i : nat => 3 %| α i)) (iota n (m - n).+1)

k.+2 < 1 + count (fun i : nat => 3 %| α i) (iota n (m - n).+1)
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m

count (predC (fun i : nat => 3 %| α i)) (iota n (m - n).+1) <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m

α (n + (m - n)) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n (m - n).+1) <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
u:nat

α (n + u) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n u.+1) <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2

count (predC (fun i : nat => 3 %| α i)) (iota n k.+2) <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2

α (n.+1 + k) < (α n.+1).*2
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) <= 1 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+2) <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2

count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) <= 1 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+2) <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2

count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) <= 1 -> predC (fun i : nat => 3 %| α i) n + count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2

count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) < 1 -> true -> predC (fun i0 : nat => 3 %| α i0) n + count (predC (fun i0 : nat => 3 %| α i0)) (iota n.+1 k.+1) <= 1
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
predC (fun i : nat => 3 %| α i) n + count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1

predC (fun i : nat => 3 %| α i) n + count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1

has (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1)
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH1:i \in iota n.+1 k.+1
iH2:predC (fun i : nat => 3 %| α i) i
predC (fun i : nat => 3 %| α i) n + count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH1:i \in iota n.+1 k.+1
iH2:predC (fun i : nat => 3 %| α i) i

predC (fun i : nat => 3 %| α i) n + count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1

predC (fun i : nat => 3 %| α i) n + count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)

1 + 1 <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1:nat
aiE:α i = 2 ^ i1 * 3 ^ 0

1 + 1 <= 1
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, j1:nat
aiE:α i = 2 ^ i1 * 3 ^ j1.+1
1 + 1 <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1:nat
aiE:α i = 2 ^ i1 * 3 ^ 0
i2:nat
anE:α n = 2 ^ i2 * 3 ^ 0

1 + 1 <= 1
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1:nat
aiE:α i = 2 ^ i1 * 3 ^ 0
i2, j2:nat
anE:α n = 2 ^ i2 * 3 ^ j2.+1
1 + 1 <= 1
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, j1:nat
aiE:α i = 2 ^ i1 * 3 ^ j1.+1
1 + 1 <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, i2:nat
aiE:α i = 2 ^ i1
anE:α n = 2 ^ i2

1 + 1 <= 1
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1:nat
aiE:α i = 2 ^ i1 * 3 ^ 0
i2, j2:nat
anE:α n = 2 ^ i2 * 3 ^ j2.+1
1 + 1 <= 1
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, j1:nat
aiE:α i = 2 ^ i1 * 3 ^ j1.+1
1 + 1 <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, i2:nat
aiE:α i = 2 ^ i1
anE:α n = 2 ^ i2

α n < α i -> 1 + 1 <= 1
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1:nat
aiE:α i = 2 ^ i1 * 3 ^ 0
i2, j2:nat
anE:α n = 2 ^ i2 * 3 ^ j2.+1
1 + 1 <= 1
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, j1:nat
aiE:α i = 2 ^ i1 * 3 ^ j1.+1
1 + 1 <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, i2:nat
aiE:α i = 2 ^ i1
anE:α n = 2 ^ i2
i2Li1:i2 < i1

1 + 1 <= 1
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1:nat
aiE:α i = 2 ^ i1 * 3 ^ 0
i2, j2:nat
anE:α n = 2 ^ i2 * 3 ^ j2.+1
1 + 1 <= 1
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, j1:nat
aiE:α i = 2 ^ i1 * 3 ^ j1.+1
1 + 1 <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, i2:nat
aiE:α i = 2 ^ i1
anE:α n = 2 ^ i2
i2Li1:i2 < i1

α i < (α n).*2
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, i2:nat
aiE:α i = 2 ^ i1
anE:α n = 2 ^ i2
i2Li1:i2 < i1
α i < (α n).*2 -> 1 + 1 <= 1
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1:nat
aiE:α i = 2 ^ i1 * 3 ^ 0
i2, j2:nat
anE:α n = 2 ^ i2 * 3 ^ j2.+1
1 + 1 <= 1
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, j1:nat
aiE:α i = 2 ^ i1 * 3 ^ j1.+1
1 + 1 <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, i2:nat
aiE:α i = 2 ^ i1
anE:α n = 2 ^ i2
i2Li1:i2 < i1

α i <= α (n.+1 + k)
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, i2:nat
aiE:α i = 2 ^ i1
anE:α n = 2 ^ i2
i2Li1:i2 < i1
α i < (α n).*2 -> 1 + 1 <= 1
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1:nat
aiE:α i = 2 ^ i1 * 3 ^ 0
i2, j2:nat
anE:α n = 2 ^ i2 * 3 ^ j2.+1
1 + 1 <= 1
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, j1:nat
aiE:α i = 2 ^ i1 * 3 ^ j1.+1
1 + 1 <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iH3:~~ (3 %| α n)
i1, i2:nat
aiE:α i = 2 ^ i1
anE:α n = 2 ^ i2
i2Li1:i2 < i1
iLS:i < n.+1 + k

α i <= α (n.+1 + k)
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, i2:nat
aiE:α i = 2 ^ i1
anE:α n = 2 ^ i2
i2Li1:i2 < i1
α i < (α n).*2 -> 1 + 1 <= 1
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1:nat
aiE:α i = 2 ^ i1 * 3 ^ 0
i2, j2:nat
anE:α n = 2 ^ i2 * 3 ^ j2.+1
1 + 1 <= 1
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, j1:nat
aiE:α i = 2 ^ i1 * 3 ^ j1.+1
1 + 1 <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, i2:nat
aiE:α i = 2 ^ i1
anE:α n = 2 ^ i2
i2Li1:i2 < i1

α i < (α n).*2 -> 1 + 1 <= 1
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1:nat
aiE:α i = 2 ^ i1 * 3 ^ 0
i2, j2:nat
anE:α n = 2 ^ i2 * 3 ^ j2.+1
1 + 1 <= 1
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, j1:nat
aiE:α i = 2 ^ i1 * 3 ^ j1.+1
1 + 1 <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1:nat
aiE:α i = 2 ^ i1 * 3 ^ 0
i2, j2:nat
anE:α n = 2 ^ i2 * 3 ^ j2.+1

1 + 1 <= 1
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, j1:nat
aiE:α i = 2 ^ i1 * 3 ^ j1.+1
1 + 1 <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
m, k:nat
IH:forall n : nat, α (n + k) < (α n).*2 -> count (predC (fun i : nat => 3 %| α i)) (iota n k.+1) <= 1
n:nat
H:α (n + k.+1) < (α n).*2
H1:count (predC (fun i : nat => 3 %| α i)) (iota n.+1 k.+1) = 1
i:nat_eqType
iH2:predC (fun i : nat => 3 %| α i) i
nLi:n < i
iLn:i < n.+1 + k.+1
iH3:~~ (3 %| α n)
i1, j1:nat
aiE:α i = 2 ^ i1 * 3 ^ j1.+1

1 + 1 <= 1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat

sorted ltn l
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat

sorted (relpre [eta α] ltn) [seq i <- iota n (m - n).+1 | 3 %| α i]
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat

transitive (relpre [eta α] ltn)
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
sorted (relpre [eta α] ltn) (iota n (m - n).+1)
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat

sorted (relpre [eta α] ltn) (iota n (m - n).+1)
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
k1:nat
IH1:forall n : nat, sorted (relpre [eta α] ltn) (iota n k1)
n0:nat

path (relpre [eta α] ltn) n0 (iota n0.+1 k1)
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l

n1 \in l
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2

m1 \in l
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2

n1 < m1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
n1:=head 0 l:nat
m1:=last 0 l:nat
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
a, b:nat
l1:seq nat

a < b -> path ltn b l1 -> a < last b l1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
n1:=head 0 l:nat
m1:=last 0 l:nat
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
c:nat
l1:seq nat
IH1:forall a b : nat, a < b -> path ltn b l1 -> a < last b l1
a, b:nat
aLb:a < b
bLc:b < c
pH:path ltn c l1

a < last c l1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1

n2 < m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2

α n2 < α m2 -> n2 < m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
m2Ln2:m2 < n2

α n2 < α m2 -> false
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1

{subset l <= l1}
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j

i \in l1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j

n2 <= m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
n2 <= j < m2.+1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j

n2 <= j < m2.+1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j

n2 <= j
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
j <= m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j

n1 <= i
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
n1 <= i -> n2 <= j
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
j <= m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
n1:=head 0 l:nat
m1:=last 0 l:nat
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
j:nat
jE:i = 3 * α j
a:nat
l2:seq nat

i \in a :: l2 -> path ltn a l2 -> a <= i
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
n1 <= i -> n2 <= j
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
j <= m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
n1:=head 0 l:nat
m1:=last 0 l:nat
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
j:nat
jE:i = 3 * α j
a:nat
l2:seq nat

i \in l2 -> path ltn a l2 -> a <= i
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
n1 <= i -> n2 <= j
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
j <= m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
n1:=head 0 l:nat
m1:=last 0 l:nat
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
j:nat
jE:i = 3 * α j
b:nat
l2:seq nat
IH1:forall a : nat, i \in l2 -> path ltn a l2 -> a <= i
a:nat

i \in b :: l2 -> (a < b) && path ltn b l2 -> a <= i
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
n1 <= i -> n2 <= j
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
j <= m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
n1:=head 0 l:nat
m1:=last 0 l:nat
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
j:nat
jE:i = 3 * α j
b:nat
l2:seq nat
IH1:forall a : nat, i \in l2 -> path ltn a l2 -> a <= i
a:nat
bIl2:i \in l2
aLb:a < b
pH:path ltn b l2

a <= i
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
n1 <= i -> n2 <= j
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
j <= m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
n1:=head 0 l:nat
m1:=last 0 l:nat
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
j:nat
jE:i = 3 * α j
b:nat
l2:seq nat
IH1:forall a : nat, i \in l2 -> path ltn a l2 -> a <= i
a:nat
bIl2:i \in l2
aLb:a < b
pH:path ltn b l2

b <= i
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
n1 <= i -> n2 <= j
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
j <= m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j

n1 <= i -> n2 <= j
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
j <= m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
jLn2:j < n2

α n2 <= α j -> false
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
j <= m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j

j <= m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j

i <= m1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
i <= m1 -> j <= m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
n1:=head 0 l:nat
m1:=last 0 l:nat
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
j:nat
jE:i = 3 * α j
a:nat
l2:seq nat

i \in a :: l2 -> path ltn a l2 -> i <= last a l2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
i <= m1 -> j <= m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
n1:=head 0 l:nat
m1:=last 0 l:nat
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
j:nat
jE:i = 3 * α j
b:nat
l2:seq nat
IH1:forall a i : nat, i \in a :: l2 -> path ltn a l2 -> i <= last a l2
a, i1:nat

i1 \in [:: a, b & l2] -> (a < b) && path ltn b l2 -> i1 <= last b l2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
i <= m1 -> j <= m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
n1:=head 0 l:nat
m1:=last 0 l:nat
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
j:nat
jE:i = 3 * α j
b:nat
l2:seq nat
IH1:forall a i : nat, i \in a :: l2 -> path ltn a l2 -> i <= last a l2
a, i1:nat
aLb:a < b
pH:path ltn b l2

a <= last b l2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
n1:=head 0 l:nat
m1:=last 0 l:nat
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
j:nat
jE:i = 3 * α j
b:nat
l2:seq nat
IH1:forall a i : nat, i \in a :: l2 -> path ltn a l2 -> i <= last a l2
a, i1:nat
bIl2:i1 \in b :: l2
aLb:a < b
pH:path ltn b l2
i1 <= last b l2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
i <= m1 -> j <= m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
n1:=head 0 l:nat
m1:=last 0 l:nat
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
j:nat
jE:i = 3 * α j
b:nat
l2:seq nat
IH1:forall a i : nat, i \in a :: l2 -> path ltn a l2 -> i <= last a l2
a, i1:nat
aLb:a < b
pH:path ltn b l2

b \in b :: l2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
n1:=head 0 l:nat
m1:=last 0 l:nat
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
j:nat
jE:i = 3 * α j
b:nat
l2:seq nat
IH1:forall a i : nat, i \in a :: l2 -> path ltn a l2 -> i <= last a l2
a, i1:nat
bIl2:i1 \in b :: l2
aLb:a < b
pH:path ltn b l2
i1 <= last b l2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
i <= m1 -> j <= m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
n1:=head 0 l:nat
m1:=last 0 l:nat
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
j:nat
jE:i = 3 * α j
b:nat
l2:seq nat
IH1:forall a i : nat, i \in a :: l2 -> path ltn a l2 -> i <= last a l2
a, i1:nat
bIl2:i1 \in b :: l2
aLb:a < b
pH:path ltn b l2

i1 <= last b l2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
i <= m1 -> j <= m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j

i <= m1 -> j <= m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
i:nat_eqType
iIl:i \in l
j:nat
jE:i = 3 * α j
jLn2:m2 < j

α j <= α m2 -> false
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}

k + n2 < m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}

k < m2 - n2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2

α n <= 3 * α n2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2

α n <= n1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
i1:nat_eqType

i1 \in [seq i <- iota n (m - n).+1 | 3 %| α i] -> n1 = α i1 -> α n <= n1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
i1:nat_eqType
nLi1:n <= i1

α n <= α i1
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2

3 * α m2 <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
am2Lam:3 * α m2 <= α m
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2

m1 <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
am2Lam:3 * α m2 <= α m
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
i1:nat_eqType

i1 \in [seq i <- iota n (m - n).+1 | 3 %| α i] -> m1 = α i1 -> m1 <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
am2Lam:3 * α m2 <= α m
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
i1:nat_eqType
i1Lm:i1 < n + (m - n).+1

α i1 <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
am2Lam:3 * α m2 <= α m
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
i1:nat_eqType
i1Lm:i1 <= m

α i1 <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
am2Lam:3 * α m2 <= α m
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
am2Lam:3 * α m2 <= α m

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
am2Lam:3 * α m2 <= α m

α m2 < (α n2).*2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
am2Lam:3 * α m2 <= α m
am2Lan2:α m2 < (α n2).*2
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
am2Lam:3 * α m2 <= α m

3 * α m2 < (3 * α n2).*2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
am2Lam:3 * α m2 <= α m
am2Lan2:α m2 < (α n2).*2
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2

α m < (3 * α n2).*2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
am2Lam:3 * α m2 <= α m
am2Lan2:α m2 < (α n2).*2
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2

(α n).*2 <= (3 * α n2).*2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
am2Lam:3 * α m2 <= α m
am2Lan2:α m2 < (α n2).*2
3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
am2Lam:3 * α m2 <= α m
am2Lan2:α m2 < (α n2).*2

3 ^ k.+1 + α n <= α m
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
am2Lan2:α m2 < (α n2).*2

3 ^ k.+1 + α n <= 3 * α m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
am2Lan2:α m2 < (α n2).*2

3 ^ k.+1 + 3 * α n2 <= 3 * α m2
k:nat
IH:forall m n : nat, k + n < m -> α m < (α n).*2 -> 3 ^ k + α n <= α m
m, n:nat
nkLm:k.+1 + n < m
aL2a:α m < (α n).*2
l:=[seq α i | i <- iota n (m - n).+1 & 3 %| α i]:seq nat
Il:forall i : nat_eqType, i \in l -> exists j : nat, i = 3 * α j
nLm:n <= m
iS:k.+2 < size (iota n (m - n).+1)
kLsl:k.+1 < size l
n1:=head 0 l:nat
m1:=last 0 l:nat
lS:sorted ltn l
uS:uniq l
n1Il:n1 \in l
n2:nat
n2E:n1 = 3 * α n2
m1Il:m1 \in l
m2:nat
m2E:m1 = 3 * α m2
n1Lm1:n1 < m1
n2Lm2:n2 < m2
l1:=[seq 3 * α i | i <- iota n2 (m2 - n2).+1]:seq nat
l1size:size l1 = (m2 - n2).+1
H:{subset l <= l1}
kn2Lm2:k + n2 < m2
anLan2:α n <= 3 * α n2
am2Lan2:α m2 < (α n2).*2

3 ^ k + α n2 <= α m2
by apply: IH kn2Lm2 am2Lan2. Qed.
m, k:nat

3 ^ k <= α m -> α m + 3 ^ k <= α (m + k.+1)
m, k:nat

3 ^ k <= α m -> α m + 3 ^ k <= α (m + k.+1)
m, k:nat
kLam:3 ^ k <= α m

α m + 3 ^ k <= α (m + k.+1)
m, k:nat
kLam:3 ^ k <= α m

α m + minn (3 ^ k) (α m) <= α (m + k.+1) -> α m + 3 ^ k <= α (m + k.+1)
by rewrite (minn_idPl _). Qed.
l, n:nat

{i : 'I_n.+1 | S_[l] n = (S1 i).*2 + l * ((3 ^ (n - i)).-1)./2}
l, n:nat

{i : 'I_n.+1 | S_[l] n = (S1 i).*2 + l * ((3 ^ (n - i)).-1)./2}
by apply: eq_bigmin. Qed.

increasing S1

increasing S1
by move=> n; rewrite -leq_double; case: convex_2S1. Qed.
n:nat

~~ odd (3 ^ n).-1
n:nat

~~ odd (3 ^ n).-1
by rewrite -subn1 oddB ?expn_gt0 // oddX orbT. Qed. (* This is 3.4 *)
l, n:nat

1 < l -> S_[l.+1] n.+1 <= S_[l] n + (α_[1] n).*2
l, n:nat

1 < l -> S_[l.+1] n.+1 <= S_[l] n + (α_[1] n).*2
l, n:nat
l_gt1:1 < l

S_[l.+1] n.+1 <= S_[l] n + (α n).*2
l, n:nat
l_gt1:1 < l
m:nat
mLn:m < n.+1
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2

S_[l.+1] n.+1 <= S_[l] n + (α n).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m <= n

S_[l.+1] n.+1 <= (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2 + (α n).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m <= n

S_[l.+1] n.+1 <= (S1 m.+1).*2 + l.+1 * ((3 ^ (n - m)).-1)./2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m <= n
(S1 m.+1).*2 + l.+1 * ((3 ^ (n - m)).-1)./2 <= (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2 + (α n).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m <= n

(S1 m.+1).*2 + l.+1 * ((3 ^ (n - m)).-1)./2 <= (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2 + (α n).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m <= n

(S1 m.+1).*2 + ((3 ^ (n - m)).-1)./2 <= (S1 m).*2 + (α n).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m <= n

(S1 m.+1).*2 - (S1 m).*2 + ((3 ^ (n - m)).-1)./2 <= (α n).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m <= n

(α m).*2 + ((3 ^ (n - m)).-1)./2 <= (α n).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

(α m).*2 + ((3 ^ (n - m)).-1)./2 <= (α n).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

(α m).*2 + ((3 ^ (n - m)).-1)./2 <= (α m).*2 + (3 ^ (n - m).-1).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n
(α m).*2 + (3 ^ (n - m).-1).*2 <= (α n).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

(((3 ^ (n - m)).-1)./2).*2 <= ((3 ^ (n - m).-1).*2).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n
(α m).*2 + (3 ^ (n - m).-1).*2 <= (α n).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

(((3 ^ (n - m)).-1)./2).*2 <= (3 ^ (n - m)).-1
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n
(3 ^ (n - m)).-1 <= ((3 ^ (n - m).-1).*2).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n
(α m).*2 + (3 ^ (n - m).-1).*2 <= (α n).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

(3 ^ (n - m)).-1 <= ((3 ^ (n - m).-1).*2).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n
(α m).*2 + (3 ^ (n - m).-1).*2 <= (α n).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

3 ^ (n - m) <= ((3 ^ (n - m).-1).*2).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n
(α m).*2 + (3 ^ (n - m).-1).*2 <= (α n).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

(α m).*2 + (3 ^ (n - m).-1).*2 <= (α n).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

α m + 3 ^ (n - m).-1 <= α n
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

(3 ^ (n - m).-1 <= α m -> α m + 3 ^ (n - m).-1 <= α (m + (n - m).-1.+1)) -> α m + 3 ^ (n - m).-1 <= α n
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

(3 ^ (n - m).-1 <= α m -> α m + 3 ^ (n - m).-1 <= α n) -> α m + 3 ^ (n - m).-1 <= α n
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

3 ^ (n - m).-1 <= α m
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

S_[l] n <= (S1 m.+1).*2 + l * ((3 ^ (n - m.+1)).-1)./2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n
S_[l] n <= (S1 m.+1).*2 + l * ((3 ^ (n - m.+1)).-1)./2 -> 3 ^ (n - m).-1 <= α m
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

S_[l] n <= (S1 m.+1).*2 + l * ((3 ^ (n - m.+1)).-1)./2 -> 3 ^ (n - m).-1 <= α m
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

S1 m.+1 = S1 m + α m
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n
(S1 m).*2 + l * ((3 ^ (n - m)).-1)./2 <= (S1 m + α m).*2 + l * ((3 ^ (n - m.+1)).-1)./2 -> 3 ^ (n - m).-1 <= α m
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

(S1 m).*2 + l * ((3 ^ (n - m)).-1)./2 <= (S1 m + α m).*2 + l * ((3 ^ (n - m.+1)).-1)./2 -> 3 ^ (n - m).-1 <= α m
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

l * ((3 ^ (n - m)).-1)./2 <= (α m).*2 + l * ((3 ^ (n - m.+1)).-1)./2 -> 3 ^ (n - m).-1 <= α m
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

l * (((3 ^ (n - m)).-1)./2 - ((3 ^ (n - m.+1)).-1)./2) <= (α m).*2 -> (3 ^ (n - m).-1).*2 <= (α m).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

l * ((3 ^ (n - m)).-1 - (3 ^ (n - m.+1)).-1)./2 <= (α m).*2 -> (3 ^ (n - m).-1).*2 <= (α m).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

(3 ^ (n - m)).-1 - (3 ^ (n - m.+1)).-1 = (3 ^ (n - m).-1).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n
l * ((3 ^ (n - m).-1).*2)./2 <= (α m).*2 -> (3 ^ (n - m).-1).*2 <= (α m).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

3 ^ (n - m) - 3 ^ (n - m).-1 = (3 ^ (n - m).-1).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n
l * ((3 ^ (n - m).-1).*2)./2 <= (α m).*2 -> (3 ^ (n - m).-1).*2 <= (α m).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

3 * 3 ^ (n - m).-1 - 3 ^ (n - m).-1 = (3 ^ (n - m).-1).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n
l * ((3 ^ (n - m).-1).*2)./2 <= (α m).*2 -> (3 ^ (n - m).-1).*2 <= (α m).*2
l, n:nat
l_gt1:1 < l
m:nat
mH:S_[l] n = (S1 m).*2 + l * ((3 ^ (n - m)).-1)./2
mLn:m < n

l * ((3 ^ (n - m).-1).*2)./2 <= (α m).*2 -> (3 ^ (n - m).-1).*2 <= (α m).*2
by move=> /(leq_trans _)-> //; rewrite doubleK -mul2n leq_mul2r l_gt1 orbT. Qed.
l, n:nat

S_[l] n.+1 = minn (S1 n.+1).*2 (S_[3 * l] n + l)
l, n:nat

S_[l] n.+1 = minn (S1 n.+1).*2 (S_[3 * l] n + l)
l, n:nat

minn (S1 n.+1).*2 (\min_(i <= n) ((S1 i).*2 + l * ((3 ^ (n.+1 - i)).-1)./2)) = minn (S1 n.+1).*2 (S_[3 * l] n + l)
l, n:nat

\min_(i <= n) ((S1 i).*2 + l * ((3 ^ (n.+1 - i)).-1)./2) = S_[3 * l] n + l
l, n:nat

\min_(i <= n) ((S1 i).*2 + l * ((3 ^ (n.+1 - i)).-1)./2) = \min_(i <= n) ((S1 i).*2 + 3 * l * ((3 ^ (n - i)).-1)./2 + l)
l, n, i:nat
iH:i <= n

l * ((3 ^ (n.+1 - i)).-1)./2 = 3 * l * ((3 ^ (n - i)).-1)./2 + l
l, n, i:nat
iH:i <= n

((3 ^ (n.+1 - i)).-1)./2 = 3 * ((3 ^ (n - i)).-1)./2 + 1
l, n, i:nat
iH:i <= n

((3 ^ (n.+1 - i)).-1)./2 = (3 * (3 ^ (n - i)).-1)./2 + 2./2
l, n, i:nat
iH:i <= n

(3 ^ (n.+1 - i)).-1 = 3 * (3 ^ (n - i)).-1 + 2
l, n, i:nat
iH:i <= n

2 < (3 * 3 ^ (n - i)).+1
l, n, i:nat
iH:i <= n
2 < 3 * 3 ^ (n - i)
l, n, i:nat
iH:i <= n

2 < 3 * 3 ^ (n - i)
by rewrite -expnS (leq_exp2l 1). Qed. (* This is first part of 3.5 *)
n:nat

S_[1] n.+1 = (S_[3] n).+1
n:nat

S_[1] n.+1 = (S_[3] n).+1
n:nat

S1 n.+1 = (S_[3] n).+1
n:nat

S_[1] n.+1 = minn (S1 n.+1).*2 (S_[3 * 1] n + 1) -> S1 n.+1 = (S_[3] n).+1
n:nat

S1 n.+1 == (S1 n.+1).*2 -> S1 n.+1 = (S_[3] n).+1
n:nat

0 == S1 n.+1 -> S1 n.+1 = (S_[3] n).+1
n:nat

0 < S1 n.+1
n:nat

increasing S1
by apply: increasing_dsum_alpha. Qed.
n:nat

α_[3] n = α_[1] n.+1
n:nat

α_[3] n = α_[1] n.+1
by rewrite /alphaL /delta -subSS -!dsum_alpha3_S. Qed. (* This is second part of 3.5 *)
l, n:nat

S_[l] n.+1 <= S_[3 * l] n + l
l, n:nat

S_[l] n.+1 <= S_[3 * l] n + l
l, n:nat

minn (S1 n.+1).*2 (S_[3 * l] n + l) <= S_[3 * l] n + l
by apply: geq_minr. Qed.
l, n:nat

S_[l] n + S_[l] n.+1 <= (S_[l.*2] n).*2 + l
l, n:nat

S_[l] n + S_[l] n.+1 <= (S_[l.*2] n).*2 + l
l, n:nat
H:S_[l + l - l] n + S_[l + l + l] n <= (S_[l + l] n).*2

S_[l] n + S_[l] n.+1 <= (S_[l.*2] n).*2 + l
l, n:nat
H:S_[l] n + S_[(2 + 1) * l] n <= (S_[l.*2] n).*2

S_[l] n + S_[l] n.+1 <= (S_[l.*2] n).*2 + l
l, n:nat
H:S_[l] n + S_[(2 + 1) * l] n <= (S_[l.*2] n).*2

S_[l] n + S_[l] n.+1 <= S_[l] n + S_[(2 + 1) * l] n + l
by rewrite -addnA leq_add2l dsum_alpha3l. Qed.
n:nat

S_[1] n + S_[1] n.+1 <= (S_[2] n).*2.+1
n:nat

S_[1] n + S_[1] n.+1 <= (S_[2] n).*2.+1
by have := leq_dsum_alpha_2l_l 1 n; rewrite addn1. Qed. (* This is 3.7 *)
n:nat

3 < n -> 3 * α_[1] n.+1 <= 4 * α_[1] n
n:nat

3 < n -> 3 * α_[1] n.+1 <= 4 * α_[1] n
n:nat

3 < n -> 3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n

3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n

3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i:nat
anE:α n = 2 ^ i * 3 ^ 0

3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i:nat
anE:α n = 2 ^ i

3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n

3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
H1:8 * α n.+1 <= 9 * α n

3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
8 * α n.+1 <= 9 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
H1:8 * α n.+1 <= 9 * α n

3 * 8 * α n.+1 <= 2 * 2 * 2 * 4 * α n
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
8 * α n.+1 <= 9 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
H1:8 * α n.+1 <= 9 * α n

3 * 8 * α n.+1 <= 3 * 9 * α n
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
H1:8 * α n.+1 <= 9 * α n
3 * 9 * α n <= 2 * 2 * 2 * 4 * α n
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
8 * α n.+1 <= 9 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
H1:8 * α n.+1 <= 9 * α n

3 * 9 * α n <= 2 * 2 * 2 * 4 * α n
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
8 * α n.+1 <= 9 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n

8 * α n.+1 <= 9 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
m:=2 ^ i * 3 ^ 2:nat

8 * α n.+1 <= 9 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
m:=2 ^ i * 3 ^ 2:nat
m1:nat
m1H:α m1 = 2 ^ i * 3 ^ 2

8 * α n.+1 <= 9 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
m:=2 ^ i * 3 ^ 2:nat
m1:nat
m1H:α m1 = 2 ^ i * 3 ^ 2

α n < α m1
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
m:=2 ^ i * 3 ^ 2:nat
m1:nat
m1H:α m1 = 2 ^ i * 3 ^ 2
H2:α n < α m1
8 * α n.+1 <= 9 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
m:=2 ^ i * 3 ^ 2:nat
m1:nat
m1H:α m1 = 2 ^ i * 3 ^ 2
H2:α n < α m1

8 * α n.+1 <= 9 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
m:=2 ^ i * 3 ^ 2:nat
m1:nat
m1H:α m1 = 2 ^ i * 3 ^ 2
H2:α n < α m1

α n.+1 <= α m1
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
m:=2 ^ i * 3 ^ 2:nat
m1:nat
m1H:α m1 = 2 ^ i * 3 ^ 2
H2:α n < α m1
H3:α n.+1 <= α m1
8 * α n.+1 <= 9 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
m:=2 ^ i * 3 ^ 2:nat
m1:nat
m1H:α m1 = 2 ^ i * 3 ^ 2
H2:α n < α m1

α m1 <= α n -> α n.+1 <= α m1
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
m:=2 ^ i * 3 ^ 2:nat
m1:nat
m1H:α m1 = 2 ^ i * 3 ^ 2
H2:α n < α m1
H3:α n.+1 <= α m1
8 * α n.+1 <= 9 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
m:=2 ^ i * 3 ^ 2:nat
m1:nat
m1H:α m1 = 2 ^ i * 3 ^ 2
H2:α n < α m1
H3:α n.+1 <= α m1

8 * α n.+1 <= 9 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
i:nat
anE:α n = 2 ^ i.+3
an_gt_5:5 < α n
m:=2 ^ i * 3 ^ 2:nat
m1:nat
m1H:α m1 = 2 ^ i * 3 ^ 2
H2:α n < α m1
H3:α n.+1 <= α m1

(8 == 0) || (α n.+1 <= 2 ^ i * 9)
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1

3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
m:=2 ^ i.+2 * 3 ^ j:nat

3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
m:=2 ^ i.+2 * 3 ^ j:nat
m1:nat
m1H:α m1 = 2 ^ i.+2 * 3 ^ j

3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
m:=2 ^ i.+2 * 3 ^ j:nat
m1:nat
m1H:α m1 = 2 ^ i.+2 * 3 ^ j

α n < α m1
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
m:=2 ^ i.+2 * 3 ^ j:nat
m1:nat
m1H:α m1 = 2 ^ i.+2 * 3 ^ j
H2:α n < α m1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
m:=2 ^ i.+2 * 3 ^ j:nat
m1:nat
m1H:α m1 = 2 ^ i.+2 * 3 ^ j

3 ^ j * 3 < 2 * (2 * 3 ^ j)
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
m:=2 ^ i.+2 * 3 ^ j:nat
m1:nat
m1H:α m1 = 2 ^ i.+2 * 3 ^ j
H2:α n < α m1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
m:=2 ^ i.+2 * 3 ^ j:nat
m1:nat
m1H:α m1 = 2 ^ i.+2 * 3 ^ j
H2:α n < α m1

3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
m:=2 ^ i.+2 * 3 ^ j:nat
m1:nat
m1H:α m1 = 2 ^ i.+2 * 3 ^ j
H2:α n < α m1

α n.+1 <= α m1
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
m:=2 ^ i.+2 * 3 ^ j:nat
m1:nat
m1H:α m1 = 2 ^ i.+2 * 3 ^ j
H2:α n < α m1
H3:α n.+1 <= α m1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
m:=2 ^ i.+2 * 3 ^ j:nat
m1:nat
m1H:α m1 = 2 ^ i.+2 * 3 ^ j
H2:α n < α m1

α m1 <= α n -> α n.+1 <= α m1
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
m:=2 ^ i.+2 * 3 ^ j:nat
m1:nat
m1H:α m1 = 2 ^ i.+2 * 3 ^ j
H2:α n < α m1
H3:α n.+1 <= α m1
3 * α n.+1 <= 4 * α n
n:nat
n_gt_3:3 < n
an_gt_5:5 < α n
i, j:nat
anE:α n = 2 ^ i * 3 ^ j.+1
m:=2 ^ i.+2 * 3 ^ j:nat
m1:nat
m1H:α m1 = 2 ^ i.+2 * 3 ^ j
H2:α n < α m1
H3:α n.+1 <= α m1

3 * α n.+1 <= 4 * α n
by rewrite anE !expnSr -[4]/(2 ^ 2) !mulnA -expnD add2n -m1H mulnC leq_mul2r. Qed.
n:nat

α_[1] n.+1 <= (α_[1] n).*2
n:nat

α_[1] n.+1 <= (α_[1] n).*2
n:nat

α n.+1 <= (α n).*2
k:nat

α k.+1.+4 <= (α k.+4).*2
k:nat

3 * α k.+1.+4 <= 3 * (α k.+4).*2
k:nat

3 * α_[1] k.+1.+4 <= 3 * (α_[1] k.+4).*2
k:nat

4 * α_[1] k.+4 <= 3 * (α_[1] k.+4).*2
by rewrite -mul2n mulnA leq_mul2r orbT. Qed.
n:nat

α_[1] n.+2 <= (α_[1] n).*2.+1
n:nat

α_[1] n.+2 <= (α_[1] n).*2.+1
n:nat

α n.+2 <= (α n).*2.+1
k:nat

α k.+2.+4 <= (α k.+4).*2.+1
k:nat

α_[1] k.+2.+4 <= (α_[1] k.+4).*2.+1
k:nat

α_[1] k.+2.+4 <= (α_[1] k.+4).*2
k:nat

3 * α_[1] k.+2.+4 <= 3 * (α_[1] k.+4).*2
k:nat

4 * α_[1] k.+1.+4 <= 3 * (α_[1] k.+4).*2
k:nat

3 * (4 * α_[1] k.+1.+4) <= 3 * (3 * (α_[1] k.+4).*2)
k:nat

4 * (3 * α_[1] k.+1.+4) <= 4 * (4 * α_[1] k.+4)
k:nat
4 * (4 * α_[1] k.+4) <= 3 * (3 * (α_[1] k.+4).*2)
k:nat

4 * (4 * α_[1] k.+4) <= 3 * (3 * (α_[1] k.+4).*2)
by rewrite -mul2n !mulnA leq_mul2r orbT. Qed.
l, n:nat

S_[l] n.+1 = S_[l] n + α_[l] n
l, n:nat

S_[l] n.+1 = S_[l] n + α_[l] n
by rewrite addnC subnK //; case: (convex_dsum_alphaL l). Qed.
l, n:nat

S_[l] n = \sum_(i < n) α_[l] i
l, n:nat

S_[l] n = \sum_(i < n) α_[l] i
l:nat

S_[l] 0 = \sum_(i < 0) α_[l] i
l, n:nat
IH:S_[l] n = \sum_(i < n) α_[l] i
S_[l] n.+1 = \sum_(i < n.+1) α_[l] i
l, n:nat
IH:S_[l] n = \sum_(i < n) α_[l] i

S_[l] n.+1 = \sum_(i < n.+1) α_[l] i
by rewrite dsum_alphaL_S IH big_ord_recr. Qed. (* Table *)

((S_[1] 0 = 0) * (S_[1] 1 = 1) * (S_[1] 2 = 3) * (S_[1] 3 = 6) * (S_[1] 4 = 10) * (S_[1] 5 = 16) * (S_[1] 6 = 24))%type

((S_[1] 0 = 0) * (S_[1] 1 = 1) * (S_[1] 2 = 3) * (S_[1] 3 = 6) * (S_[1] 4 = 10) * (S_[1] 5 = 16) * (S_[1] 6 = 24))%type
by rewrite /dsum_alphaL /conv /= /dsum_alpha -!(big_mkord xpredT) unlock /=; compute. Qed.

((S_[2] 0 = 0) * (S_[2] 1 = 2) * (S_[2] 2 = 4) * (S_[2] 3 = 8) * (S_[2] 4 = 14) * (S_[2] 5 = 20) * (S_[2] 6 = 28))%type

((S_[2] 0 = 0) * (S_[2] 1 = 2) * (S_[2] 2 = 4) * (S_[2] 3 = 8) * (S_[2] 4 = 14) * (S_[2] 5 = 20) * (S_[2] 6 = 28))%type
by rewrite /dsum_alphaL /conv /= /dsum_alpha -!(big_mkord xpredT) unlock /=; compute. Qed.

((S_[3] 0 = 0) * (S_[3] 1 = 2) * (S_[3] 2 = 5) * (S_[3] 3 = 9) * (S_[3] 4 = 15) * (S_[3] 5 = 23) * (S_[3] 6 = 32))%type

((S_[3] 0 = 0) * (S_[3] 1 = 2) * (S_[3] 2 = 5) * (S_[3] 3 = 9) * (S_[3] 4 = 15) * (S_[3] 5 = 23) * (S_[3] 6 = 32))%type
by rewrite /dsum_alphaL /conv /= /dsum_alpha -!(big_mkord xpredT) unlock /=; compute. Qed.

((S_[4] 0 = 0) * (S_[4] 1 = 2) * (S_[4] 2 = 6) * (S_[4] 3 = 10) * (S_[4] 4 = 16) * (S_[4] 5 = 24) * (S_[4] 6 = 36))%type

((S_[4] 0 = 0) * (S_[4] 1 = 2) * (S_[4] 2 = 6) * (S_[4] 3 = 10) * (S_[4] 4 = 16) * (S_[4] 5 = 24) * (S_[4] 6 = 36))%type
by rewrite /dsum_alphaL /conv /= /dsum_alpha -!(big_mkord xpredT) unlock /=; compute. Qed.

((S_[5] 0 = 0) * (S_[5] 1 = 2) * (S_[5] 2 = 6) * (S_[5] 3 = 11) * (S_[5] 4 = 17) * (S_[5] 5 = 25) * (S_[5] 6 = 37))%type

((S_[5] 0 = 0) * (S_[5] 1 = 2) * (S_[5] 2 = 6) * (S_[5] 3 = 11) * (S_[5] 4 = 17) * (S_[5] 5 = 25) * (S_[5] 6 = 37))%type
by rewrite /dsum_alphaL /conv /= /dsum_alpha -!(big_mkord xpredT) unlock /=; compute. Qed.

((α_[1] 0 = 1) * (α_[1] 1 = 2) * (α_[1] 2 = 3) * (α_[1] 3 = 4) * (α_[1] 4 = 6) * (α_[1] 5 = 8))%type

((α_[1] 0 = 1) * (α_[1] 1 = 2) * (α_[1] 2 = 3) * (α_[1] 3 = 4) * (α_[1] 4 = 6) * (α_[1] 5 = 8))%type
by rewrite /alphaL /delta !S1_small; compute. Qed.

((α_[2] 0 = 2) * (α_[2] 1 = 2) * (α_[2] 2 = 4) * (α_[2] 3 = 6) * (α_[2] 4 = 6) * (α_[2] 5 = 8))%type

((α_[2] 0 = 2) * (α_[2] 1 = 2) * (α_[2] 2 = 4) * (α_[2] 3 = 6) * (α_[2] 4 = 6) * (α_[2] 5 = 8))%type
by rewrite /alphaL /delta !S2_small; compute. Qed.

((α_[3] 0 = 2) * (α_[3] 1 = 3) * (α_[3] 2 = 4) * (α_[3] 3 = 6) * (α_[3] 4 = 8) * (α_[3] 5 = 9))%type

((α_[3] 0 = 2) * (α_[3] 1 = 3) * (α_[3] 2 = 4) * (α_[3] 3 = 6) * (α_[3] 4 = 8) * (α_[3] 5 = 9))%type
by rewrite /alphaL /delta !S3_small; compute. Qed.

((α_[4] 0 = 2) * (α_[4] 1 = 4) * (α_[4] 2 = 4) * (α_[4] 3 = 6) * (α_[4] 4 = 8) * (α_[4] 5 = 12))%type

((α_[4] 0 = 2) * (α_[4] 1 = 4) * (α_[4] 2 = 4) * (α_[4] 3 = 6) * (α_[4] 4 = 8) * (α_[4] 5 = 12))%type
by rewrite /alphaL /delta !S4_small; compute. Qed.

((α_[5] 0 = 2) * (α_[5] 1 = 4) * (α_[5] 2 = 5) * (α_[5] 3 = 6) * (α_[5] 4 = 8) * (α_[5] 5 = 12))%type

((α_[5] 0 = 2) * (α_[5] 1 = 4) * (α_[5] 2 = 5) * (α_[5] 3 = 6) * (α_[5] 4 = 8) * (α_[5] 5 = 12))%type
by rewrite /alphaL /delta !S5_small; compute. Qed. Definition alphaS_small := (S1_small, S2_small, S3_small, S4_small, S5_small). Definition alpha_small := (alpha1_small, alpha2_small, alpha3_small, alpha4_small, alpha5_small). End S23. Notation α := (alpha 2 3). Notation "\min_ ( i <= n ) F" := (bigmin (fun i => F) n) (at level 41, F at level 41, i, n at level 50, format "\min_ ( i <= n ) F"). Notation " 'S_[' l ']' " := (dsum_alphaL l) (format "S_[ l ]"). Notation " 'α_[' l ']' " := (alphaL l) (format "α_[ l ]"). Notation S1 := dsum_alpha.